import 'package:chicken_farm/core/utils/logger.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:chicken_farm/stores/auth_store.dart'; import 'package:chicken_farm/routes/app_routes.dart'; class RouteGuard { static String? redirectLogic(BuildContext context, GoRouterState state) { final container = ProviderScope.containerOf(context); final authState = container.read(authStoreProvider); final isGoingToLogin = state.matchedLocation == '/login'; logger.d( "-- redirect -- path: ${state.matchedLocation} state: ${authState.state}", ); if (authState.state == AuthState.loading) return null; // 加载中不跳转 // 如果已经认证,且当前在登录页或启动页,则跳转到主页 if (authState.state == AuthState.authenticated && (isGoingToLogin || state.matchedLocation == '/')) { return AppRouteNames.home; } // 如果未认证,且不是前往登录页或启动页,则跳转到登录页 if (authState.state != AuthState.authenticated && !isGoingToLogin && state.matchedLocation != '/') { return '/login'; } return null; } }