@@ -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
@@ -26,20 +27,33 @@ class AppRouter extends _$AppRouter {
2627 @override
2728 final defaultRouteType = const RouteType .material ();
2829
30+ @override
31+ Future <void > onNavigation (
32+ NavigationResolver resolver,
33+ StackRouter router,
34+ ) async {
35+ // final authState = null;
36+
37+ log.info ("${resolver .route .name } (${AuthRoute .name })" );
38+
39+ if (resolver.route.name == AuthRoute .name) {
40+ resolver.next (); // continue navigation
41+ } else {
42+ // else we navigate to the Login page so we get authenticated
43+
44+ // tip: use resolver.redirect to have the redirected route
45+ // automatically removed from the stack when the resolver is completed
46+ await resolver.redirect (const AuthRoute ()).then (
47+ (didLogin) => resolver.next ((didLogin ?? false ) as bool ),
48+ );
49+ }
50+ }
51+
2952 @override
3053 List <AutoRoute > get routes => [
3154 AutoRoute (
3255 page: WrapperRoute .page,
3356 path: "/" ,
34- guards: [
35- AutoRouteGuard .redirect (
36- (resolver) {
37- final authState = ref.read (userProvider).valueOrNull;
38-
39- return (authState != null ) ? null : const AuthRoute ();
40- },
41- ),
42- ],
4357 children: [
4458 AutoRoute (
4559 page: PirateCoinsRoute .page,
0 commit comments