Historical source · 2021–2022
日本語アーカイブ · 2.0 への移行について
原文・コード例・画像を保存した2021–2022年のドキュメント。
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.