You should define the route class you created as final and give it to Material App. It worked for me.
final _appRouter = NavigatorRoutes();
routerConfig: _appRouter.router,
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
);
await EasyLocalization.ensureInitialized();
runApp(EasyLocalization(
supportedLocales: LocalizationsConfig.supportedLocales,
path: LocalizationsConfig.path,
child: App(),
));
}
class App extends StatelessWidget {
App({super.key});
final _appRouter = NavigatorRoutes();
final _providers = Providers();
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: _providers.items,
child: MaterialApp.router(
debugShowCheckedModeBanner: false,
title: 'Map Mates',
theme: AppTheme.baseScheme,
routerConfig: _appRouter.router,
),
);
}
}
My NavigatorRoutes class is like this
part of 'app_config.dart';
class NavigatorRoutes {
final GoRouter router = GoRouter(
errorBuilder: (BuildContext context, GoRouterState state) => const NotFoundPage(),
initialLocation: RouteName.root.path,
routes: <RouteBase>[
GoRoute(
path: RouteName.root.path,
builder: (BuildContext context, GoRouterState state) {
return const Root();
},
routes: <RouteBase>[
GoRoute(
path: RouteName.mapScreen.routeName,
builder: (BuildContext context, GoRouterState state) {
return const MapBasePage();
},
),
GoRoute(
path: RouteName.loginScreen.routeName,
builder: (BuildContext context, GoRouterState state) {
return const LoginPage();
},
),
GoRoute(
path: RouteName.singInScreen.routeName,
builder: (BuildContext context, GoRouterState state) {
return const SingInPage();
},
),
GoRoute(
path: RouteName.frogPassPage.routeName,
builder: (BuildContext context, GoRouterState state) {
return const FrogPassPage();
},
),
GoRoute(
path: RouteName.homePage.routeName,
builder: (BuildContext context, GoRouterState state) {
return const HomePage();
},
),
GoRoute(
path: RouteName.editProfilePage.routeName,
builder: (BuildContext context, GoRouterState state) {
return const EditProfilePage();
},
),
],
),
GoRoute(
path: RouteName.camera.path,
builder: (BuildContext context, GoRouterState state) {
return const CameraPage();
},
),
GoRoute(
path: RouteName.playerPage.path,
builder: (BuildContext context, GoRouterState state) {
var data = state.extra as Map<String, dynamic>;
return EditContentPage(
imageFile: data['imageFile'],
videoFile: data["videoFile"],
);
},
),
],
);
}