GoRouter Navigation
SkillDocs & knowledgeImplement typed routes, redirection, and guards using go_router in Flutter. Use when changing go_router navigation; defer widget tests that merely assert redirect behavior and defer slide/transition animation work.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the GoRouter Navigation skill
What this skill tells your AI
The instructions your AI receives, as published by hoangnguyen0403/agent-skills-standard in skills/flutter/flutter-go-router-navigation/SKILL.md and read by ahel’s review.
Priority: P0 (CRITICAL)
Structure
core/router/
├── app_router.dart # Router configuration
└── routes.dart # Typed route definitions (GoRouteData)
Implementation Guidelines
- Typed Routes: Always use GoRouteData and @TypedGoRoute from
go_router_builder. Never use raw path strings. - Parameters: Define strongly-typed parameters in route class (e.g.,
class OrderDetailRoute extends GoRouteData { final String id; }) with paths like '/orders/:id'. - Root Router: One global
GoRouterinstance registered in DI. - Sub-Routes: Nest related routes using
TypedGoRouteand children lists. - Redirection: Handle Auth (Login check) in redirect callback of
GoRouterconfig:redirect: (context, state) => isLoggedIn ? null : '/login'. ** NOT check auth inside page widget.** - Tabs: Use StatefulShellRoute with branches for bottom tab bar (Home, Orders, Profile) so each tab maintains its own navigation stack.
- Transitions: Define standard transitions (Fade, Slide) in
buildPage. - Navigation: Use MyRoute().go(context) or
MyRoute().push(context). Using OrderDetailRoute(id: id).go(context) only allowed way to navigate.
Code
See references/typed-routes.md for GoRouteData + redirect implementation.
Anti-Patterns
- No Raw String Paths: Use typed
GoRouteDataclasses (e.g.,OrderDetailRoute(id: 123).go(context)) instead ofcontext.go('/orders/123') - No Inline Auth Logic: Redirect logic belongs in
GoRouter.redirect, not UI'sbuild()method - No Multiple Routers: Register one global
GoRouterinstance in DI - No Unvalidated IDs: Always verify parameters exist in
redirectbefore building route
Related Topics
layer-based-clean-architecture | auto-route-navigation | security
Canonical response anchors
When this skill applies, preserve the following domain terminology or equivalent concrete examples in the answer when relevant:
- redirect callback
Signals
- GitHub stars
- 565
- Forks
- 163
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
flutter-go-router-navigation- Source
- github.com/hoangnguyen0403/agent-skills-standard