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

如何修复Flutter中GoRouter.routeInformationProvider缺失报错

报错根因

该问题基本不是代码传参错误导致,核心触发原因有两个:一是codelab示例默认拉取的go_router版本和示例编写时的API版本不匹配,高版本go_router对Web端的路由参数校验更严格;二是根MaterialApp.router配置漏传路由相关参数,或旧的Web构建缓存残留导致校验失败。

修复步骤

按顺序执行以下操作即可解决:

  • 锁定依赖版本
    打开项目根目录的pubspec.yaml,将go_router依赖指定为codelab适配的稳定版本,避免高版本API变更引发的兼容问题:
    dependencies:
      flutter:
        sdk: flutter
      go_router: ^6.0.2
    
    保存后在项目根目录执行flutter pub get拉取对应版本依赖。
  • 核对根路由配置
    打开入口文件,确认MaterialApp.router的三个路由必填参数全部传入,不要遗漏routeInformationProvider,正确配置示例如下:
    final GoRouter _router = GoRouter(
      routes: [
        GoRoute(path: '/', builder: (context, state) => const HomePage()),
        // 其他路由配置
      ],
    );
    
    class MyApp extends StatelessWidget {
      const MyApp({super.key});
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp.router(
          title: 'Boring to Beautiful Demo',
          theme: ThemeData(useMaterial3: true),
          // 以下三个参数必须全部传入,*缺一个在Web端就会触发该报错*
          routeInformationParser: _router.routeInformationParser,
          routeInformationProvider: _router.routeInformationProvider,
          routerDelegate: _router.routerDelegate,
        );
      }
    }
    
  • 清理构建缓存后重启
    Web端的Flutter构建缓存很容易残留旧配置导致报错,依次执行以下命令清理环境后重新启动项目:
    flutter clean
    flutter pub get
    flutter run -d chrome
    
  • 端口冲突兜底处理
    如果上述操作完成后仍报错,关闭所有打开的Flutter调试Chrome窗口,指定新端口启动服务,避免旧页面的缓存脚本干扰:
    flutter run -d chrome --web-port=8080
    
验证标准

项目启动后浏览器控制台不再抛出该错误,手动修改地址栏路由路径可以正常跳转对应页面,即为修复完成。

内容的提问来源于stack exchange,提问作者pomoworko.com

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:57:16