智慧水务管理系统 - 精河县供水工程综合管理平台

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import 'package:flutter/material.dart';
  2. import 'package:go_router/go_router.dart';
  3. import '../features/auth/pages/login_page.dart';
  4. import '../features/auth/services/token_service.dart';
  5. import '../features/main_shell/pages/main_shell_page.dart';
  6. import '../features/revenue/pages/bill_list_page.dart';
  7. /// 应用路由配置
  8. class AppRoutes {
  9. static const String login = '/login';
  10. static const String main = '/main';
  11. static const String bills = '/bills';
  12. static GoRouter createRouter() {
  13. return GoRouter(
  14. initialLocation: login,
  15. redirect: (BuildContext context, GoRouterState state) async {
  16. final tokenService = TokenService();
  17. final isLoggedIn = await tokenService.isLoggedIn();
  18. final isGoingToLogin = state.matchedLocation == login;
  19. if (!isLoggedIn && !isGoingToLogin) return login;
  20. if (isLoggedIn && isGoingToLogin) return main;
  21. return null;
  22. },
  23. routes: [
  24. GoRoute(
  25. path: login,
  26. builder: (context, state) => const LoginPage(),
  27. ),
  28. GoRoute(
  29. path: main,
  30. builder: (context, state) => const MainShellPage(),
  31. ),
  32. GoRoute(
  33. path: bills,
  34. builder: (context, state) => const BillListPage(),
  35. ),
  36. ],
  37. );
  38. }
  39. }