| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import 'package:flutter/material.dart';
- import 'package:go_router/go_router.dart';
- import '../features/auth/pages/login_page.dart';
- import '../features/auth/services/token_service.dart';
- import '../features/main_shell/pages/main_shell_page.dart';
- import '../features/revenue/pages/bill_list_page.dart';
-
- /// 应用路由配置
- class AppRoutes {
- static const String login = '/login';
- static const String main = '/main';
- static const String bills = '/bills';
-
- static GoRouter createRouter() {
- return GoRouter(
- initialLocation: login,
- redirect: (BuildContext context, GoRouterState state) async {
- final tokenService = TokenService();
- final isLoggedIn = await tokenService.isLoggedIn();
- final isGoingToLogin = state.matchedLocation == login;
-
- if (!isLoggedIn && !isGoingToLogin) return login;
- if (isLoggedIn && isGoingToLogin) return main;
- return null;
- },
- routes: [
- GoRoute(
- path: login,
- builder: (context, state) => const LoginPage(),
- ),
- GoRoute(
- path: main,
- builder: (context, state) => const MainShellPage(),
- ),
- GoRoute(
- path: bills,
- builder: (context, state) => const BillListPage(),
- ),
- ],
- );
- }
- }
|