GoRouter.dev

Historical source · 2021–2022

日本語アーカイブ · 2.0 への移行について

原文・コード例・画像を保存した2021–2022年のドキュメント。

Edition published 21 Oct 2026Original APIs
On this page
これは2021–2022年の原文アーカイブです。旧APIの例が含まれます。2026年版の英語ガイドも参照してください。

2.0 への移行について

需要により go_router 2.0 リリースから破壊的変更があります。 GoRouterState オブジェクトの params プロパティが2つのプロパティに分割されました。

  • params : パスパラメータ。パスの一部として渡されるパラメータ。/family/:fid など。
  • queryParams : クエリパラメータ。ロケーション名の末尾にオプションとして追加されるパラメータ。/login?from=/family/f2 など。

1.x リリースでは、params プロパティはパスパラメータとクエリパラメータの両方を含む単一の Map オブジェクトでした。 例えば、クエリパラメータを取得するには以下のように params プロパティを使用していました。

dart / example
GoRoute(
  path: '/login',
  pageBuilder: (context, state) => MaterialPage<void>(
    key: state.pageKey,
    // 1.x: クエリパラメータを取得
    child: LoginScreen(from: state.params['from']),
  ),
),

2.0 以降のリリースでは、クエリパラメータを取得するには次のようにする必要があります。

dart / example
GoRoute(
  path: '/login',
  pageBuilder: (context, state) => MaterialPage<void>(
    key: state.pageKey,
    // 2.0: クエリパラメータを取得
    child: LoginScreen(from: state.queryParams['from']),
  ),
),

同様に 1.x リリースでは、名前付きルートを使用する際、パスパラメータとクエリパラメータを以下のように渡していたかと思います。

dart / example
ListTile(
  title: Text(p.name),
  // 1.x: パスパラメータとクエリパラメータの両方を渡す
  onTap: () => context.goNamed(
    'person',
    // パスパラメータに該当しないものは全てクエリパラメータとみなされていた
    {'fid': family.id, 'pid': p.id, 'qid': 'quid'},
  ),
),

2.0 以降のリリースでは、次のようにする必要があります。

dart / example
ListTile(
  title: Text(p.name),
  // 2.0: パスパラメータとクエリパラメータの両方を渡す
  onTap: () => context.goNamed(
    'person',
    params: {'fid': family.id, 'pid': p.id},
    queryParams: {'qid': 'quid'},
  ),
),

種類が異なる2つのパラメータをそれぞれ単一のスコープとすることで、より分かりやすくなるといいのですが。

Sources & version context

GoRouter.dev documentation edition. The preserved text describes the original package APIs. Follow the current guide before using it in a new project.

Find your next route