buildRouter function
GoRouter
buildRouter({})
Implementation
GoRouter buildRouter({
required String initialRoute,
required String initialDeeplink,
required bool isLoggedIn,
required INavigationHelpers navigationHelpers,
}) {
final builtGoRoutes = buildRoutes();
return _router.get(
() => GoRouter(
observers: [NavObserver()],
redirectLimit: 10,
initialLocation: initialRoute.isEmpty ? null : initialRoute,
redirect: (context, state) {
final GoRouter router = getObject();
if (state.name == Screens.otpForm.name &&
state.uri.queryParameters['phone'] == null) {
return router.namedLocation(Screens.otpPhone.name);
}
final IAuthDataStore authStore = getObject();
final isLoggedIn = authStore.isLoggedIn();
if (!_isRoutePublic(state.uri.path)) {
if (!isLoggedIn) {
return Screens.otpPhone.forRoot();
}
}
return null;
},
errorBuilder: (context, error) {
return Error404Screen(
gotoHome: () async {
final navHelper = getObject<INavigationHelpers>();
final route = await navHelper.getNextRoute();
navHelper.navigate(route, eventProps: {
'cta': 'invalid_route',
});
},
);
},
debugLogDiagnostics: verboseLogs,
routes: builtGoRoutes,
navigatorKey: navigationHelpers.navigatorKey,
),
);
}