【问题标题】:Flutter : Could not find a generator for route RouteSettings("/HomePage", null) in the _WidgetsAppStateFlutter:在 _WidgetsAppState 中找不到路由 RouteSettings("/HomePage", null) 的生成器
【发布时间】:2019-12-26 12:43:55
【问题描述】:

我在我的演示项目中使用以下路由:

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

并尝试使用以下代码导航主屏幕:

onPressed: () {
    debugPrint("Hello button is clicked");

     Navigator.of(context)
               .pushReplacementNamed('/HomePage');
 },

但是当我点击我的按钮时,我得到了以下异常:

════════ Exception caught by gesture ═══════════════════════════════════════════════════════════════
The following assertion was thrown while handling a gesture:
Could not find a generator for route RouteSettings("/HomePage", null) in the _WidgetsAppState.

Generators for routes are searched for in the following order:
 1. For the "/" route, the "home" property, if non-null, is used.
 2. Otherwise, the "routes" table is used, if it has an entry for the route.
 3. Otherwise, onGenerateRoute is called. It should return a non-null value for any valid route not handled by "home" and "routes".
 4. Finally if all else fails onUnknownRoute is called.
Unfortunately, onUnknownRoute was not set.
When the exception was thrown, this was the stack: 
#0      _WidgetsAppState._onUnknownRoute.<anonymous closure> (package:flutter/src/widgets/app.dart:772:9)
#1      _WidgetsAppState._onUnknownRoute (package:flutter/src/widgets/app.dart:785:6)
#2      NavigatorState._routeNamed (package:flutter/src/widgets/navigator.dart:1625:22)
#3      NavigatorState.pushReplacementNamed (package:flutter/src/widgets/navigator.dart:1690:35)
#4      _RegisterPage.build.<anonymous closure> (package:oricon/register.dart:231:42)

我已经在 Stack-overflow 链接下方查看过

如果您需要更多信息,请告诉我。

【问题讨论】:

    标签: android flutter dart


    【解决方案1】:

    您可以使用代替:

    Navigator.of(context)
               .pushReplacementNamed('/HomePage');
    

    使用这个:

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

    正如您在 answer 中看到的,这对我有用

    【讨论】:

    • 我认为我们可以在这里使用两者
    【解决方案2】:

    您是否正在实施接收路径的主类?

    这是一个例子:

    void main() => runApp(MyApp()); //as you can see here, it is the main widget
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'MyApp',
          theme: ThemeData(
            primarySwatch: Colors.green,
          ),
          home: MyHomePage(title: 'Home Page'),
          routes: {
            'profile': (context) => ProfilePage(),
             /*Here's where you receive your routes, and it is also the main widget*/
          },
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    

    另外,我必须补充一点,您的问题帮助我找到了我的代码出了什么问题。谢谢!!!

    【讨论】:

      【解决方案3】:

      试试这个

       Navigator.of(context, rootNavigator: true).pushNamed("/HomePage");
      

      【讨论】:

        【解决方案4】:

        你可以在你的代码中搜索MaterialApp(不要考虑Plugin code),如果你使用pushName navigator也可以给出参数,可以避免null问题。

        请查看此two MaterialApp

        【讨论】:

          【解决方案5】:

          我有导航抽屉,我的一条路线要去一个有另一个 MaterialApp() 小部件的路线,在路由到该页面后,如果我路由回任何其他页面,它将通过此​​异常。

          因为上下文已更改为新材料应用程序,我试图在新材料应用程序中找到该路线,但显然它不存在。

          【讨论】:

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