在 _MaterialAppState 中找不到路由 "home-page" 的生成器

Could not find a generator for route "home-page" in the _MaterialAppState

当我尝试在 flutter 应用程序中从一个视图导航到另一个视图时出现异常。

I/flutter ( 2199): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════
I/flutter ( 2199): The following assertion was thrown while handling a gesture:
I/flutter ( 2199): Could not find a generator for route "home-page" in the _MaterialAppState.

使用

Navigator.push(context, new MaterialPageRoute(
  builder: (context) =>
     new MyHomePage())
  );

而不是

Navigator.of(context).pushNamed('/home-page');
//or
Navigator.pushedName(context, '/home-page');

错误说,Could not find a generator for route "home-page" in the _MaterialAppState.。当您使用 NamedRoute (从错误消息推断)时,我认为问题出在 route 设置上。路由设置参考示例,

 MaterialApp(
    title: 'Named Routes Demo',
    initialRoute: '/',
    routes: { //route setting
      '/': (context) => FirstScreen(),
      '/home-page': (context) => HomePage(), //you should have something like this.
    },
  )

试一试

  Navigator.push(context, new MaterialPageRoute(builder: (context) =>new PageName())

此消息告诉您,在路线列表中,您搜索的路线未列出。因此,请检查您的 MaterialApp->routes 中是否有您指定的路线。

您需要在特定的 dart 文件中定义要跳转到下一屏幕的路径。例如,在您的情况下,有三个屏幕: 1. mainScreen.dart 2.loginScreen.dart 3.TabScreen.dart

现在您可能已经在 mainscreen.dart 中为 Loginscreen 和 TabScreen 定义了路由,例如:

routes : <String, WidgetBuilder>{
'/login' : (BuildContext context)=> LoginScreen()
'/tab' : (BuildContext context)=> TabScreen()
}

并且您正尝试从 LoginScreen 跳转到 TabScreen,但您尚未在 LoginScreen.dart

中定义 TabScreen 的路由

请确保您已经在 LoginScreen 中为 TabScreen 定义了路由:

routes : <String, WidgetBuilder>{
'/tab' : (BuildContext context)=> TabScreen()
}