Flutter Navigation
Priority: P1 (OPERATIONAL)
Implementation Workflow
- Choose router — Use
go_router for modern, declarative routing.
- Define routes — Use constants or code generation for route paths; never hardcode strings.
- Configure deep links — Set up
AndroidManifest.xml and Info.plist for URL schemes.
- Validate parameters — Check parameters in
redirect logic before navigation.
- Preserve tab state — Use
StatefulShellRoute or IndexedStack for bottom navigation.
Route Configuration Example
See implementation examples for GoRouter configuration with parameter validation and redirects.
Routing Patterns & Examples
Anti-Patterns
- No Manual URL Parsing: Use
go_router built-in parsing instead of Uri.parse(url)
- No Manual Tab State Management: Use
IndexedStack or StatefulShellRoute to preserve state
- No Unvalidated Deep Link IDs: Always check existence in
redirect
- No Hardcoded Route Strings: Use constants (e.g.,
Routes.orders) or code-gen instead of '/orders'
Related Topics
flutter-design-system | flutter-notifications | mobile-ux-core