Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flutter : Could not find a generator for route RouteSettings("/HomePage", null) in the _WidgetsAppState

I'm using the following in my demo project for routes:

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

And trying to navigate home screen using the following code:

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

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

But When my button clicked I'm getting the following Exception:

════════ 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)

I have already checked below Stack-overflow links

  • Could not find a generator for route RouteSettings("/", null) in the _WidgetsAppState
  • How to use routes in flutter to navigate to page other than from main?
  • Could not find a generator for route "home-page" in the _MaterialAppState
  • Why does it not work when I use pushNamedReplacement instead of pushReplacement?

If you need more information, please do let me know.

like image 555
Goku Avatar asked Dec 26 '19 12:12

Goku


People also ask

How do you use Navigator pushNamed?

To use Navigator. pushNamed(), we have to follow two steps: declare routes property in the MaterialApp constructor. call the Navigator.


3 Answers

Are you implementing to the main Class that's receiving your paths?

Here's an example:

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();
}

Also, I have to add that your question helped me find what was going wrong with my code. Thanks!!!

like image 103
Manbbo Avatar answered Sep 19 '22 17:09

Manbbo


You can use instead of:

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

Use this:

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

As you can see in this answer, this worked for me

like image 38
Askaredox Avatar answered Sep 22 '22 17:09

Askaredox


try this

 Navigator.of(context, rootNavigator: true).pushNamed("/HomePage");
like image 30
Chris Avatar answered Sep 21 '22 17:09

Chris