在 _MaterialAppState 中找不到路由“主页”的生成器
Posted
技术标签:
【中文标题】在 _MaterialAppState 中找不到路由“主页”的生成器【英文标题】:Could not find a generator for route "home-page" in the _MaterialAppState 【发布时间】:2019-02-23 14:36:05 【问题描述】:当我尝试在 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 【参考方案1】:使用
Navigator.push(context, new MaterialPageRoute(
builder: (context) =>
new MyHomePage())
);
代替
Navigator.of(context).pushNamed('/home-page');
//or
Navigator.pushedName(context, '/home-page');
【讨论】:
这对我来说是一个解决方案;但是 push 似乎不支持将对象作为参数?有什么办法绕过这个限制吗? @cdsaenz 你明白了吗?你的意思是你想通过 MyHomePage() 方法传递一个对象,例如 new MyHomePage(fooObj) 以便在那里使用它? 现在不在我的电脑上,但我记得创建了一个类来保存参数,所以它是这样的:class PageParameters final num id; final String title; PageParameters(this.id,this.title);
抱歉格式错误,但是是的,基本上你在页面小部件中添加这个对象,然后在推送操作中将数据作为参数发送到新页面。我在这里得到了灵感link
有什么解释吗?【参考方案2】:
此消息告诉您,在路线列表中,您搜索的路线未列出。因此,请检查您的 MaterialApp->routes 中是否有您指定的路线。
【讨论】:
【参考方案3】:试试看
Navigator.push(context, new MaterialPageRoute(builder: (context) =>new PageName())
【讨论】:
【参考方案4】:您需要在特定的 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()
【讨论】:
【参考方案5】:错误提示,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.
,
)
【讨论】:
以上是关于在 _MaterialAppState 中找不到路由“主页”的生成器的主要内容,如果未能解决你的问题,请参考以下文章
Flyway:在 [classpath:db/migration] 中找不到迁移位置
在 aws api 网关中找不到“GLIBC_2.18”错误