Flutter Navigation
Priority: P1 (OPERATIONAL)
Navigation and routing for Flutter apps using go_router or named routes.
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
- ❌
Uri.parse(url)for manual URL parsing — usego_routerbuilt-in parsing - ❌
Scaffoldbody switching for tabs — loses state; useIndexedStackorStatefulShellRoute - ❌ Unvalidated deep link IDs — always check existence in
redirect - ❌ Hardcoded route strings like
'/orders'— use constants (e.g.,Routes.orders) or code generation
Related Topics
flutter-design-system | flutter-notifications | mobile-ux-core