Moving Beyond push(): Managing Complex App State with Flutter Navigator 2.0
Stop relying on imperative push/pop calls for complex apps. Learn how Flutter Navigator 2.0 uses a declarative page stack to sync your UI with URLs and app state.
ReadMeFeed / Community knowledge
Real questions. Useful conversations. Find the people who know your stack.
Stop relying on imperative push/pop calls for complex apps. Learn how Flutter Navigator 2.0 uses a declarative page stack to sync your UI with URLs and app state.
Learn how Dart’s sound null safety moves null‑related bugs from runtime to compile time, with a concrete JSON‑parsing example, migration steps, and practical trade‑offs.
Learn how to eliminate impossible states in Dart 3 by using sealed classes and exhaustive switch expressions to model async loading, success, and error states.
A concise architecture‑level guide for adopting Dart sound null safety, covering requirements, minimal design, data boundaries, CI checks, failure modes, and triggers for redesign.
A hands-on guide to migrating a legacy Dart module to null safety: run the automated tool, resolve the remaining warnings, refactor a real service method, and verify the result—without a full rewrite.
A practical task guide for migrating Dart and Flutter projects to sound null safety using the official analysis and annotation workflow.
Dart 3 sealed classes replace null-sentinel returns and forgotten error branches with compiler-checked domain models. A worked example shows exhaustive switching over a profile-fetch result type.
When a Dart async exception never reaches your try/catch, the cause is usually an unawaited Future. A diagnostic table, ordered checks, and fixes from await to runZonedGuarded.
Column in SingleChildScrollView builds every child up front; ListView.builder builds only what's visible. Here's how the lazy model works, a chat-feed example, and the state and nesting trade-offs to plan for.