5

当我尝试在颤振应用程序中从一个视图导航到另一个视图时,我遇到了异常。

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.
4

5 回答 5

27

利用

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

代替

Navigator.of(context).pushNamed('/home-page');
//or
Navigator.pushedName(context, '/home-page');
于 2018-09-19T13:10:23.520 回答
2

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

于 2019-05-28T10:51:40.260 回答
0

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

 MaterialApp(
    title: 'Named Routes Demo',
    initialRoute: '/',
    routes: { //route setting
      '/': (context) => FirstScreen(),
      '/home-page': (context) => HomePage(), //you should have something like this.
    },
  )
于 2018-09-19T14:31:50.923 回答
0

试试看

  Navigator.push(context, new MaterialPageRoute(builder: (context) =>new PageName())
于 2019-05-20T16:41:25.517 回答
0

您需要在要跳转到下一个屏幕的特定 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()
}
于 2019-06-30T10:31:30.963 回答