1

我有一组我在 中定义的路由,routes.dart这些路由在main.dart文件中链接如下。

  @override
  Widget build(BuildContext context) {
    return MultiProvider(
      providers: [
        StreamProvider<ConnectivityStatus>(
          create: (_) => ConnectionService().connectionStatusController.stream,
        ),
        ...
        ChangeNotifierProvider<AuthNotifier>(
          create: (_) => AuthNotifier(),
        ),
      ],
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        routes: Routes.routes,
        home: SplashScreen(),
      ),
    );
  }

Routes.dart文件:

class Routes {
  Routes._();

  static const chat = '/chat';

  static final routes = <String, WidgetBuilder>{
    chat: (BuildContext ctx) => CircleChat(),
  };
}

我有一个触发上述路线但抛出错误的按钮。

FlatButton(
  Navigator.of(context).pushReplacementNamed(Routes.chat);
)

错误 -

处理手势时引发以下断言:在 _CustomTabViewState 中找不到路由 RouteSettings("chat", null) 的生成器。按以下顺序搜索路线的生成器:

  1. 对于“/”路由,如果非空,则使用“builder”属性。
  2. 否则,如果“路由”表具有路由条目,则使用该表。
  3. 否则,调用 onGenerateRoute。它应该为“builder”和“routes”未处理的任何有效路由返回一个非空值。
  4. 最后,如果所有其他方法都失败,则调用 onUnknownRoute。不幸的是,未设置 onUnknownRoute。

抛出异常时,这是堆栈:#0 _CustomTabViewState._onUnknownRoute。

PS - 对于一个类似的错误,我经历了这个这个,但我没有找到解释,为什么当所有语义都正确时它不起作用。

4

0 回答 0