You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter应用GoRouter近期更新后无法访问queryParams的问题

解决GoRouter无法访问查询参数的问题

问题原因

GoRouter在版本迭代中重构了路由状态GoRouterState的结构,早期版本的queryParams字段已被调整,部分新版本中查询参数被移至uri属性下,直接访问state.queryParameters可能因版本差异失效。

解决方案

根据你使用的GoRouter版本,选择对应获取方式:

  1. 版本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'],
              );
            },
          ),
        ],
      );
    
  2. 版本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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 02:17:43