Flutter应用GoRouter近期更新后无法访问queryParams的问题
解决GoRouter无法访问查询参数的问题
问题原因
GoRouter在版本迭代中重构了路由状态GoRouterState的结构,早期版本的queryParams字段已被调整,部分新版本中查询参数被移至uri属性下,直接访问state.queryParameters可能因版本差异失效。
解决方案
根据你使用的GoRouter版本,选择对应获取方式:
版本7.x及以上
需通过state.uri.queryParameters访问查询参数,修改代码如下:final _router = GoRouter( routes: [ GoRoute( path: OnBoardingScreen.route(), name: OnBoardingScreen.route(), builder: (context, state) { return OnBoardingScreen( next: state.uri.queryParameters['next'], ); }, ), ], );版本6.x系列
若使用6.x初期版本,state.queryParameters仍可正常使用,但需确认pubspec.yaml中依赖版本是否与代码兼容。
额外验证步骤
- 打印路由状态结构,确认参数位置:
builder: (context, state) { print(state.toString()); // 控制台输出会显示所有可用字段 return OnBoardingScreen( next: state.uri.queryParameters['next'], ); }, - 确保跳转时传递参数的方式正确:
// 方式1:通过queryParameters参数传递 GoRouter.of(context).push( OnBoardingScreen.route(), queryParameters: {'next': '/home'}, ); // 方式2:直接拼接Uri GoRouter.of(context).push(Uri.parse('${OnBoardingScreen.route()}?next=/home'));
内容的提问来源于stack exchange,提问作者ololo
相关产品推荐
相关产品推荐

