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

问题描述 投票:0回答:6

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

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

════════小部件库捕获异常 构建 IconTheme(color: Color(0xdd000000)) 时抛出以下断言: 这个GoRouteInformationParser需要和GoRouteInformationProvider一起使用,你是不是忘记将GoRouter.routeInformationProvider传入到Router构造函数中了? '包:go_router/src/go_route_information_parser.dart': 包:go_router/src/go_route_information_parser.dart:1 断言失败:第 148 行第 13 行:“routeInformation 是 DebugGoRouteInformation”

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

flutter
6个回答
36
投票

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

示例:

  final _router = GoRouter(
         ...
  );

  @override
  Widget build(BuildContext context) {
      return MaterialApp.router(
          routeInformationProvider: _router.routeInformationProvider,
          ...
       );
   }

8
投票

我也遇到了这个问题,但是通过

go_router version: ^4.1.0
并遵循这个指南,问题就解决了。


4
投票

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

之前的回答: 回到 GoRouter 3.1.1 版本即可。最新版本好像有问题


2
投票

routeinformationProvider
根处添加
MaterialApp

MaterialApp.router(
  routeInformationProvider: goRouter.routeInformationProvider,//Add this line
  routerDelegate: goRouter.routerDelegate,
  routeInformationParser: goRouter.routeInformationParser,
  debugShowCheckedModeBanner: false,
  theme: ThemeData(
    primarySwatch: Colors.amber,
  ),
);

1
投票

对我来说,添加后就解决了

下面这行代码

routeInformationProvider: _router.routeInformationProvider,

下面两行代码之前

routeInformationParser: goRouter.routeInformationParser,
routerDelegate: goRouter.routerDelegate,

1
投票

除了

routeInformationProvider
routeInformationParser
之外添加
routerDelegate
解决了我的问题。

routeInformationProvider: _router.routeInformationProvider,
routeInformationParser: _router.routeInformationParser,
routerDelegate: _router.routerDelegate
© www.soinside.com 2019 - 2024. All rights reserved.