@@ -11,12 +11,13 @@ import "../features/dashboard/presentation/wrapper_page/wrapper_page.dart";
1111import "../features/gpa_calculator/presentation/gpa_page/gpa_page.dart" ;
1212import "../features/pirate_coins/presentation/pirate_coins_page/pirate_coins_page.dart" ;
1313import "../features/pirate_coins/presentation/stats_page/stats_page.dart" ;
14+ import "../utils/log.dart" ;
1415
1516part "app_router.gr.dart" ;
1617
1718/// The router for the application.
1819@AutoRouterConfig (replaceInRouteName: "Page,Route" )
19- class AppRouter extends _$AppRouter {
20+ class AppRouter extends _$AppRouter implements AutoRouteGuard {
2021 /// Create a new instance of [AppRouter] .
2122 AppRouter ({required this .ref});
2223
@@ -28,20 +29,33 @@ class AppRouter extends _$AppRouter {
2829 transitionsBuilder: TransitionsBuilders .slideLeftWithFade,
2930 );
3031
32+ @override
33+ Future <void > onNavigation (
34+ NavigationResolver resolver,
35+ StackRouter router,
36+ ) async {
37+ // final authState = null;
38+
39+ log.info ("${resolver .route .name } (${AuthRoute .name })" );
40+
41+ if (resolver.route.name == AuthRoute .name) {
42+ resolver.next (); // continue navigation
43+ } else {
44+ // else we navigate to the Login page so we get authenticated
45+
46+ // tip: use resolver.redirect to have the redirected route
47+ // automatically removed from the stack when the resolver is completed
48+ await resolver.redirect (const AuthRoute ()).then (
49+ (didLogin) => resolver.next ((didLogin ?? false ) as bool ),
50+ );
51+ }
52+ }
53+
3154 @override
3255 List <AutoRoute > get routes => [
3356 AutoRoute (
3457 page: WrapperRoute .page,
3558 path: "/" ,
36- guards: [
37- AutoRouteGuard .redirect (
38- (resolver) {
39- final authState = ref.read (userProvider).valueOrNull;
40-
41- return (authState != null ) ? null : const AuthRoute ();
42- },
43- ),
44- ],
4559 children: [
4660 AutoRoute (
4761 page: PirateCoinsRoute .page,
0 commit comments