Dart 找不到路由“”的生成器;主页;在_MaterialAppState中

Dart 找不到路由“”的生成器;主页;在_MaterialAppState中,dart,flutter,flutter-layout,dart-2,Dart,Flutter,Flutter Layout,Dart 2,当我试图在Flatter应用程序中从一个视图导航到另一个视图时,我遇到了异常 I/flutter ( 2199): ══╡ EXCEPTION CAUGHT BY GESTURE ╞═══════════════════════════════════════════════════════════════════ I/flutter ( 2199): The following assertion was thrown while handling a gesture: I/flutter (

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

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.of(context).pushNamed('/home-page');
//or
Navigator.pushedName(context, '/home-page');

错误显示,
在_MaterialAppState中找不到路由“主页”的生成器。
。由于您使用的是
namedoute
(从错误消息推断),我认为问题在于路由设置。有关路线设置,请参阅示例

 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.主屏幕.省道 2.loginScreen.dart 3.TabScreen.dart

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

routes : <String, WidgetBuilder>{
'/login' : (BuildContext context)=> LoginScreen()
'/tab' : (BuildContext context)=> TabScreen()
}
路线:{
“/login”:(BuildContext上下文)=>LoginScreen()
“/tab”:(构建上下文)=>TabScreen()
}
您正在尝试从LoginScreen跳转到TabScreen,但尚未在LoginScreen.dart中定义TabScreen的路由

请确保已在LoginScreen内为TabScreen定义了路由:

routes : <String, WidgetBuilder>{
'/tab' : (BuildContext context)=> TabScreen()
}
路线:{
“/tab”:(构建上下文)=>TabScreen()
}

code-Hunter,您需要共享您的代码。我想我知道答案,但我需要确认你是如何使用Navigator.push这是我的解决方案;但是push似乎不支持对象作为参数?有没有绕过这个限制的想法?@cdsaenz你找到了吗?你的意思是想通过MyHomePage()方法传递一个对象,例如new MyHomePage(fooObj),以便在那里使用它吗?现在不是在我的计算机上,但我记得创建了一个类来保存参数,所以是这样的:
class PageParameters{final num id;final String title;PageParameters(this.id,this.title);}
很抱歉格式不好,但是是的,基本上你在页面小部件中添加了这个对象,并在推送操作中将数据作为参数发送到新页面。我从这里得到了灵感,有什么解释吗?
routes : <String, WidgetBuilder>{
'/tab' : (BuildContext context)=> TabScreen()
}