Flutter

Flutter go_routerの使い方|ルート定義と画面遷移の基本

Flutterのgo_routerを初心者向けに解説します。GoRouter、GoRoute、MaterialApp.router、context.go、context.pushの基本を整理します。

この記事の目次
  1. この記事の結論
  2. パッケージを追加する
  3. ルートを定義する
  4. MaterialApp.routerに渡す
  5. 画面遷移する
  6. 実装後に確認すること
  7. よくあるつまずき
  8. 次に読む記事
  9. まとめ

go_routerはFlutterでURLベースの画面遷移を扱いやすくするルーティングパッケージです。小規模アプリではNavigatorでも十分ですが、Web対応やディープリンクを考えるなら早めに候補になります。

この記事の結論

最初はGoRouterでルートを定義し、MaterialApp.routerに渡し、context.goやcontext.pushで遷移する流れを覚えます。

パッケージを追加する

flutter pub add go_router

ルートを定義する

final router = GoRouter(
  routes: [
    GoRoute(
      path: "/",
      builder: (context, state) => const HomePage(),
    ),
    GoRoute(
      path: "/detail",
      builder: (context, state) => const DetailPage(),
    ),
  ],
);

MaterialApp.routerに渡す

MaterialApp.router(
  routerConfig: router,
)

画面遷移する

context.go("/detail");
context.push("/detail");

goは現在の場所を置き換える感覚、pushは戻る履歴を積む感覚で使い分けます。

実装後に確認すること

  • ルートパスが重複していないか
  • MaterialAppではなくMaterialApp.routerを使っているか
  • 戻る必要がある遷移でpushを使っているか
  • Webやディープリンクを想定したURL設計か

よくあるつまずき

  • Navigatorとgo_routerを混ぜて混乱する
  • context.goとcontext.pushを意図なく使う
  • 認証リダイレクトを最初から複雑にしすぎる
  • パス文字列を各所に散らばらせる

次に読む記事

まとめ

go_routerはFlutterの画面遷移をURLベースで整理できるパッケージです。まずは2画面のルート定義から始め、認証やネストは後から追加しましょう。