如何解决GoRouter.routeInformationProvider缺失错误?

Mg *_*een 9 flutter

flutter团队给出了以下他们创建的flutter项目,供大家学习。https://github.com/flutter/codelabs/tree/main/boring_to_beautiful \n通过他们的Codelab。

\n

我克隆了该存储库并尝试启动该应用程序。但它会引发以下错误。

\n

\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90 捕获异常通过 widgets 库\n构建 IconTheme(color: Color(0xdd000000)) 时抛出以下断言:\n这个 GoRouteInformationParser 需要与 GoRouteInformationProvider 一起使用,您是否忘记将 GoRouter.routeInformationProvider 传递给 Router 构造函数?\n\'package: go_router/src/go_route_information_parser.dart\':\npackage:go_router/src/go_route_information_parser.dart:1\n断言失败:第 148 行 pos 13: \'routeInformation 是 DebugGoRouteInformation\'

\n

从这个错误消息中,我可以理解“routeInformationProvider”似乎丢失了。但是,在 flutter 团队提供的可供学习的工作演示项目中,这可能吗?我应该传递routeInformationProvider吗?如果有的话,请提供任何文档。

\n

bai*_*u92 35

只需将routeInformationProvider添加到MaterialApp.router即可。

例子:

  final _router = GoRouter(
         ...
  );

  @override
  Widget build(BuildContext context) {
      return MaterialApp.router(
          routeInformationProvider: _router.routeInformationProvider,
          ...
       );
   }
Run Code Online (Sandbox Code Playgroud)


小智 8

我也遇到了这个问题,但是通过go_router version: ^4.1.0并遵循本指南,问题得到了解决。


Arn*_*udR 4

编辑: - 这不应被标记为正确答案,因为它只是一种解决方法。请将 Luca Iaconelli 的答案标记为正确答案

上一个答案: 回到GoRouter 3.1.1版本即可。最新版本好像有问题

  • 这不是一个“问题”,而是最新版本 go_router 的重大更改。您现在需要将一个routeInformationProvider传递给路由器,非常简单的更改。 (2认同)