@@ -16,7 +16,7 @@ part "app_router.gr.dart";
1616
1717/// The router for the application.
1818@AutoRouterConfig (replaceInRouteName: "Page,Route" )
19- class AppRouter extends _$AppRouter {
19+ class AppRouter extends _$AppRouter implements AutoRouteGuard {
2020 /// Create a new instance of [AppRouter] .
2121 AppRouter ({required this .ref});
2222
@@ -28,20 +28,31 @@ class AppRouter extends _$AppRouter {
2828 transitionsBuilder: TransitionsBuilders .slideLeftWithFade,
2929 );
3030
31+ @override
32+ Future <void > onNavigation (
33+ NavigationResolver resolver,
34+ StackRouter router,
35+ ) async {
36+ final authState = ref.read (userProvider).valueOrNull;
37+
38+ if (authState != null || resolver.route.name == AuthRoute .name) {
39+ resolver.next (); // continue navigation
40+ } else {
41+ // else we navigate to the Login page so we get authenticated
42+
43+ // tip: use resolver.redirect to have the redirected route
44+ // automatically removed from the stack when the resolver is completed
45+ await resolver.redirect (const AuthRoute ()).then (
46+ (didLogin) => resolver.next ((didLogin ?? false ) as bool ),
47+ );
48+ }
49+ }
50+
3151 @override
3252 List <AutoRoute > get routes => [
3353 AutoRoute (
3454 page: WrapperRoute .page,
3555 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- ],
4556 children: [
4657 AutoRoute (
4758 page: PirateCoinsRoute .page,
0 commit comments