SKILL.md
Flutter Navigation
Priority: P1 (HIGH)
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.xmland the iOS URL-type settings for app URL schemes. - Validate parameters — Check parameters in
redirectlogic before navigation. - Preserve tab state — Use
StatefulShellRouteorIndexedStackfor bottom navigation.
Route Configuration Example
See [implementation examples](references/implementation.md) for GoRouter configuration with parameter validation and redirects.
[Routing Patterns & Examples](references/routing-patterns.md)
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
Canonical response anchors
When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- Android
- iOS URL-type