使用go_router路由时无法访问state.queryParameters的问题
解决go_router 10.1.2版本无法访问state.queryParameters的问题
你遇到的问题是因为go_router 10.x版本已经移除了GoRouterState类中的queryParameters属性,官方文档的示例可能基于更新版本,因此和你当前使用的10.1.2版本不兼容。
解决方法
将代码中的state.queryParameters替换为state.uri.queryParameters即可正常获取查询参数。
修改后的代码如下:
final GoRouter _router = GoRouter( routes: [ GoRoute( path: "/", builder: (context, state) => const Dashboard(), routes: [ // 1. pathParameter GoRoute(path: "profile/:name", builder: (context, state) => Profile( name: state.pathParameters["name"]! )), // 2. queryParameter(已修复) GoRoute(path: "settings", builder: (context, state) => Settings( name: state.uri.queryParameters['name']! )), ]), ] );
版本差异说明
在go_router的10.x版本中,GoRouterState的查询参数相关API发生了变更:
- 10.x之前版本:直接通过
state.queryParameters获取查询参数 - 10.x及之后版本:URI相关信息统一放到
uri属性下,需通过state.uri.queryParameters获取查询参数
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

