app_router.dart 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import 'package:flutter/material.dart';
  2. import 'package:go_router/go_router.dart';
  3. import 'package:flutter_riverpod/flutter_riverpod.dart';
  4. import 'package:asr_client/pages/shell/app_shell.dart';
  5. import 'package:asr_client/pages/tasks/tasks_page.dart';
  6. import 'package:asr_client/pages/history/history_page.dart';
  7. import 'package:asr_client/pages/profile/profile_page.dart';
  8. import 'package:asr_client/pages/recording/recording_page.dart';
  9. import 'package:asr_client/pages/reports/reports_page.dart';
  10. final GlobalKey<NavigatorState> _rootNavKey = GlobalKey<NavigatorState>();
  11. final goRouterProvider = Provider<GoRouter>((ref) {
  12. return GoRouter(
  13. navigatorKey: _rootNavKey,
  14. initialLocation: '/tasks',
  15. routes: [
  16. StatefulShellRoute.indexedStack(
  17. builder: (context, state, navigationShell) {
  18. return AppShell(navigationShell: navigationShell);
  19. },
  20. branches: [
  21. StatefulShellBranch(
  22. routes: [
  23. GoRoute(
  24. path: '/tasks',
  25. builder: (context, state) => const TasksPage(),
  26. ),
  27. ],
  28. ),
  29. StatefulShellBranch(
  30. routes: [
  31. GoRoute(
  32. path: '/records',
  33. builder: (context, state) => const HistoryPage(),
  34. ),
  35. ],
  36. ),
  37. StatefulShellBranch(
  38. routes: [
  39. GoRoute(
  40. path: '/reports',
  41. builder: (context, state) => const ReportsPage(),
  42. ),
  43. ],
  44. ),
  45. StatefulShellBranch(
  46. routes: [
  47. GoRoute(
  48. path: '/profile',
  49. builder: (context, state) => const ProfilePage(),
  50. ),
  51. ],
  52. ),
  53. ],
  54. ),
  55. GoRoute(
  56. path: '/recording',
  57. parentNavigatorKey: _rootNavKey,
  58. builder: (context, state) => const RecordingPage(),
  59. ),
  60. ],
  61. );
  62. });