Flutter Navigation
Priority: P1 (OPERATIONAL)
Implementation Workflow
- Choose router — Use
go_routerfor modern, declarative routing. - Define routes — Use constants or code generation for route paths; never hardcode strings.
- Configure deep links — Set up
AndroidManifest.xmlandInfo.plistfor URL schemes. - Validate parameters — Check parameters in
redirectlogic before navigation. - Preserve tab state — Use
StatefulShellRouteorIndexedStackfor bottom navigation.
Route Configuration Example
See implementation examples for GoRouter configuration with parameter validation and redirects.
Anti-Patterns
- No Manual URL Parsing: Use
go_routerbuilt-in parsing instead ofUri.parse(url) - No Manual Tab State Management: Use
IndexedStackorStatefulShellRouteto 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