Skip to content
ExponaBLOG
Series · Day 100 of 100

Flutter

  1. 01
    Why I added Flutter to my toolkit: a step-by-step guide
    After shipping React Native apps, Flutter solved a different set of problems.
  2. 02
    How Flutter works: a practical guide for developers
    Framework, engine and embedder — and why it's fast.
  3. 03
    Everything is a widget: Flutter best practices explained
    Layout, padding, gestures and themes — all widgets.
  4. 04
    Dart essentials for TypeScript developers for production
    What's familiar, what's different.
  5. 05
    Sound null safety in Dart: practical tips and trade-offs
    Null errors become compile errors.
  6. 06
    Async Dart: Future and Stream — best practices explained
    One value later, or many values over time.
  7. 07
    Isolates for heavy work: Flutter lessons from production
    Keep the UI thread smooth.
  8. 08
    Stateless vs Stateful widgets: a practical Flutter guide
    Where state lives decides which one you use.
  9. 09
    Use const constructors: Flutter best practices explained
    A free performance win.
  10. 10
    The widget lifecycle: Flutter best practices explained
    When Flutter calls what.
  11. 11
    BuildContext explained: Flutter best practices explained
    Your widget's location in the tree.
  12. 12
    Layout: constraints go down, sizes go up for production
    The rule that explains every Flutter layout bug.
  13. 13
    Row, Column, Expanded and Flexible: a step-by-step guide
    The four widgets behind most layouts.
  14. 14
    Layout widgets you'll use daily: lessons from production
    A practical toolkit.
  15. 15
    Stack and Positioned: Flutter best practices explained
    Overlapping layouts.
  16. 16
    Responsive and adaptive layouts: lessons from production
    One codebase, phones to tablets.
  17. 17
    LayoutBuilder and MediaQuery.sizeOf: a step-by-step guide
    Know how much space you actually have.
  18. 18
    Lists and slivers: what every Flutter developer should know
    Smooth scrolling for long content.
  19. 19
    Keys in Flutter: concepts, trade-offs and production lessons
    Help Flutter match widgets to their state.
  20. 20
    Theming with Material 3: Flutter lessons from production
    Consistent design without repeating styles.
  21. 21
    ThemeExtension for custom tokens for Flutter developers
    Brand colors and spacing beyond Material.
  22. 22
    Navigation with go_router: practical tips and trade-offs
    Declarative routing with deep links.
  23. 23
    Deep links in Flutter: a practical guide for developers
    Open the right screen from a link.
  24. 24
    The state management landscape: best practices explained
    Many options. Pick based on your team.
  25. 25
    setState is fine — locally: patterns, pitfalls and fixes
    Not every state needs a library.
  26. 26
    Provider basics: what every Flutter developer should know
    The simplest step up from setState.
  27. 27
    ChangeNotifier: what every Flutter developer should know
    Simple observable state.
  28. 28
    Riverpod for scalable state: what developers should know
    Compile-safe providers without BuildContext.
  29. 29
    Riverpod code generation: a Flutter guide for developers
    Less boilerplate, fewer mistakes.
  30. 30
    Bloc and Cubit: what every Flutter developer should know
    Predictable state with explicit transitions.
  31. 31
    Cubit or Bloc: what every Flutter developer should know
    Start with Cubit, graduate to Bloc.
  32. 32
    Choosing state management: practical tips and trade-offs
    How I decide for each project.
  33. 33
    Don't mix three state libraries: lessons from production
    Mixed approaches confuse every new developer.
  34. 34
    Flutter app architecture: a hands-on guide for engineers
    Layers that keep apps maintainable.
  35. 35
    Feature-first folders: Flutter best practices explained
    Organize by feature, not by layer.
  36. 36
    Networking with Dio: Flutter best practices explained
    HTTP clients for production apps.
  37. 37
    Auth interceptors in Dio: a Flutter guide for developers
    Attach tokens and refresh them automatically.
  38. 38
    JSON serialization: what every Flutter developer should know
    From API responses to typed models.
  39. 39
    Immutable models with freezed: a practical Flutter guide
    Data classes done right.
  40. 40
    The repository pattern in Flutter: a step-by-step guide
    A single source of truth for each data type.
  41. 41
    A Result type with sealed classes for Flutter developers
    Explicit success and failure in Dart 3.
  42. 42
    Dart 3 features worth using: what developers should know
    Records, patterns and sealed classes.
  43. 43
    Switch expressions in Dart: patterns, pitfalls and fixes
    Concise, exhaustive branching.
  44. 44
    Local storage options: Flutter best practices explained
    Choosing where to store data on the device.
  45. 45
    Store tokens in secure storage: best practices explained
    Never put tokens in shared preferences.
  46. 46
    Offline-first apps: what every Flutter developer should know
    Apps that work without a signal.
  47. 47
    Handling sync conflicts: Flutter lessons from production
    Two devices edited the same record offline.
  48. 48
    Forms and validation: Flutter best practices explained
    Reliable input handling in Flutter.
  49. 49
    Always dispose controllers: patterns, pitfalls and fixes
    Leaked controllers leak memory.
  50. 50
    Implicit vs explicit animations: lessons from production
    Two ways to animate in Flutter.