KirtM9
KirtM9

Reputation: 241

App widget is not generating the route | firebase signup

Upon successful signup, I am trying to send users to the homepage (home) explaining how to use the app. I am doing so through this code block on my signup.dart

onPressed: () async {
          try {
            User user =
                (await FirebaseAuth.instance.createUserWithEmailAndPassword(
              email: _emailController.text,
              password: _passwordController.text,
            ))
                    .user;
            if (user != null) {
              user.updateProfile(displayName: _nameController.text);
              Navigator.of(context).pushNamed(AppRoutes.home);
            }
          }

Which is pointing to the home route

class AppRoutes {
  AppRoutes._();

  static const String authLogin = '/auth-login';
  static const String authSignUp = '/auth-signup';
  static const String home = '/home';

  static Map<String, WidgetBuilder> define() {
    return {
      authLogin: (context) => Login(),
      authSignUp: (context) => SignUp(),
      home: (context) => Home(),
    };
  }
}

However, when I sign up, the data is rendering in firebase, but the user is not being sent to the home page, and throws this error in my console

Make sure your root app widget has provided a way to generate
this route.
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.

Any thoughts on how to rectify?

Upvotes: 1

Views: 144

Answers (1)

Md Delwar Hossain
Md Delwar Hossain

Reputation: 185

Have you added onGenerateRoute in your MaterialApp? Like this:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      onGenerateRoute: Router.generateRoute,
      initialRoute: yourRoute,
      child: YouApp(),
    );
  }
}
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case AppRoutes.home:
        return MaterialPageRoute(builder: (_) => Home());
      case AppRoutes.authLogin:
        return MaterialPageRoute(builder: (_) => Login());
      case AppRoutes.authSignUp:
        return MaterialPageRoute(builder: (_) => SignUp());
      default:
        return MaterialPageRoute(
            builder: (_) => Scaffold(
                  body: Center(
                      child: Text('No route defined for ${settings.name}')),
           ));
        }
      }
    }
  }
}

Upvotes: 1

Related Questions