router.dart 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. import 'package:flutter/material.dart';
  2. import 'package:go_router/go_router.dart';
  3. import 'package:sino_med_cloud/features/main_tab_page.dart';
  4. import 'package:sino_med_cloud/l10n/app_localizations.dart';
  5. import '../features/auth/presentation/login_page.dart';
  6. import '../features/MediaTestPage/presentation/media_test_page.dart';
  7. import '../core/network/pages/no_network_page.dart';
  8. final rootNavigatorKey = GlobalKey<NavigatorState>();
  9. class AppRouter {
  10. static final router = GoRouter(
  11. navigatorKey: rootNavigatorKey,
  12. routes: [
  13. GoRoute(
  14. path: '/',
  15. builder: (context, state) => const LoginPage(),
  16. ),
  17. GoRoute(
  18. path: '/mainTab',
  19. builder: (context, state) => const MainTabPage(),
  20. ),
  21. GoRoute(
  22. path: '/mediaTest',
  23. builder: (context, state) => const MediaTestPage(),
  24. ),
  25. GoRoute(
  26. path: '/noNetwork',
  27. builder: (context, state) => const NoNetworkPage(),
  28. ),
  29. ],
  30. errorBuilder: (context, state) {
  31. final l10n = AppLocalizations.of(context)!;
  32. return Scaffold(
  33. appBar: AppBar(
  34. title: Text(l10n.pageNotFound),
  35. ),
  36. body: Center(
  37. child: Column(
  38. mainAxisAlignment: MainAxisAlignment.center,
  39. children: [
  40. const Icon(
  41. Icons.error_outline,
  42. size: 64,
  43. color: Colors.grey,
  44. ),
  45. const SizedBox(height: 16),
  46. Text(
  47. l10n.pageNotFoundWithUri(state.uri.toString()),
  48. style: const TextStyle(fontSize: 16),
  49. ),
  50. const SizedBox(height: 16),
  51. ElevatedButton(
  52. onPressed: () => context.go('/'),
  53. child: Text(l10n.returnHome),
  54. ),
  55. ],
  56. ),
  57. ),
  58. );
  59. },
  60. );
  61. }