Skip to content
Development
Skill

/flutter-go-router-navigation

Implement 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.

From plugin
agent-skills-standard
538200 skills1 MCP
Install
$ npx -y skills add hoangnguyen0403/agent-skills-standard --skill flutter-go-router-navigation --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/flutter-go-router-navigation

Context preview

The summary Claude sees to decide when to auto-load this skill.

Implement 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.

SKILL.md

flutter-go-router-navigation.SKILL.md
name: flutter-go-router-navigation
description: Implement 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.
metadata:
  triggers:
    files:
      - "**/router.dart"
      - "**/app_router.dart"
    keywords:
      - GoRouter
      - GoRoute
      - StatefulShellRoute
      - redirection
      - typed-routes

GoRouter Navigation

**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 `GoRouter` instance registered in DI.
  • **Sub-Routes**: Nest related routes using `TypedGoRoute` and children lists.
  • **Redirection**: Handle Auth (Login check) in **redirect callback** of `GoRouter` config: `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](references/typed-routes.md) for GoRouteData + redirect implementation.

Anti-Patterns

  • **No Raw String Paths**: Use typed `GoRouteData` classes (e.g., `OrderDetailRoute(id: 123).go(context)`) instead of `context.go('/orders/123')`
  • **No Inline Auth Logic**: Redirect logic belongs in `GoRouter.redirect`, not UI's `build()` method
  • **No Multiple Routers**: Register one global `GoRouter` instance in DI
  • **No Unvalidated IDs**: Always verify parameters exist in `redirect` before 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
Read more
Ships withagent-skills-standard

The portable SDLC standards layer for AI coding agents. Sync once, then work in your own runtime.

Get the whole plugin

Other skills on agent-skills-standard.