Error: The following message was thrown: Could not navigate to the initial route. The requested route name was: "/brands" There was no corresponding route in the app, and therefore the initial route specified will be ignored and "/" will be used instead.
I am pretty new to navigator 2.0. So, can't able to correct the problem when route of any of the routes
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:impactoverse_admin_panel/provider/brand_provider.dart';
import 'package:impactoverse_admin_panel/provider/user_provider.dart';
import 'package:impactoverse_admin_panel/screens/brand_screen.dart';
import 'package:impactoverse_admin_panel/screens/dashboard/dashboard_screen.dart';
import 'package:impactoverse_admin_panel/screens/login/login_screen.dart';
import 'package:impactoverse_admin_panel/screens/npos_cause_screen.dart';
import 'package:provider/provider.dart';
// import 'package:flutter_dotenv/flutter_dotenv.dart';\
final GlobalKey<NavigatorState> _rootNavigatorKey =
GlobalKey<NavigatorState>(debugLabel: 'root');
// final GlobalKey<NavigatorState> _shellNavigatorKey =
// GlobalKey<NavigatorState>(debugLabel: 'shell');
void main() async {
// await dotenv.load(fileName: "lib/.env");
runApp(const MyApp());
}
final GoRouter _router = GoRouter(
redirect: (context, state) {
print('Redirect one running --------');
var userLoggedIn =
Provider.of<UserProvider>(
context,
).isLoggedInUserGetter;
final isLogging = state.location == LoginScreen.routeName;
print("This is the Path of Location ${state.location}");
if (!userLoggedIn && !isLogging) {
return LoginScreen.routeName;
}
if (userLoggedIn && isLogging) return DashboardScreen.routeName;
// if (state.location == BrandScreen.routeName) return BrandScreen.routeName;
return null;
//Shared Prefs and Login Check will be here.
},
// refreshListenable: UserProvider(),
navigatorKey: _rootNavigatorKey,
routes: <RouteBase>[
GoRoute(
name: 'Login',
path: LoginScreen.routeName,
pageBuilder: (context, state) {
return MaterialPage(key: state.pageKey, child: const LoginScreen());
},
routes: const [],
),
GoRoute(
name: 'Dashboard',
path: DashboardScreen.routeName,
pageBuilder: (context, state) {
return MaterialPage(key: state.pageKey, child: const DashboardScreen());
},
routes: const [],
),
GoRoute(
name: 'Brands',
path: BrandScreen.routeName,
pageBuilder: (context, state) {
return MaterialPage(key: state.pageKey, child: const BrandScreen());
},
routes: const [],
),
GoRoute(
name: 'Npos&Cause',
path: NposCauseScreen.routeName,
pageBuilder: (context, state) {
return MaterialPage(key: state.pageKey, child: const NposCauseScreen());
},
routes: const [],
),
],
errorPageBuilder: (context, state) {
return MaterialPage(
key: state.pageKey,
child: Scaffold(
body: Center(
child: Text(state.error.toString()),
),
));
},
);
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MainProviderWidget();
}
}
class MainProviderWidget extends StatelessWidget {
const MainProviderWidget({
super.key,
});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
// ListenableProvider<NavigationController>(
// create: (_) => NavigationController()),
ChangeNotifierProvider(create: (_) => UserProvider()),
ChangeNotifierProvider(create: (_) => BrandProvider()),
],
child: MaterialApp(
theme: ThemeData(
// primarySwatch: Colors.blue,
// scaffoldBackgroundColor: Constants.purpleDark,
// canvasColor: Constants.purpleLight ,
textTheme: GoogleFonts.poppinsTextTheme(
Theme.of(context).textTheme,
),
),
title: 'Impactoverse admin panel',
home: const StartApp(),
builder: EasyLoading.init(),
debugShowCheckedModeBanner: false,
),
);
}
}
class StartApp extends StatefulWidget {
const StartApp({
super.key,
});
@override
State<StartApp> createState() => _StartAppState();
}
class _StartAppState extends State<StartApp> {
intialfunction() async {
await Provider.of<UserProvider>(context, listen: false).cacheCheck();
}
@override
void initState() {
intialfunction();
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp.router(
routerConfig: _router,
);
}
}