【问题标题】:Could not find a generator for route "home-page" in the _MaterialAppState在 _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

标签: dart flutter flutter-layout dart-2


【解决方案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.
            },
          )
        

        【讨论】:

          猜你喜欢
          • 2016-06-07
          • 1970-01-01
          • 2020-03-13
          • 2020-07-12
          • 1970-01-01
          • 2022-12-04
          • 2020-03-15
          • 1970-01-01
          • 2022-08-15
          相关资源
          最近更新 更多