import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import 'providers/auth_provider.dart'; import 'pages/login_page.dart'; import 'pages/home_page.dart'; import 'pages/event_publish_page.dart'; import 'pages/event_list_page.dart'; import 'pages/order_work_page.dart'; import 'pages/work_order_detail_page.dart'; import 'pages/order_detail_page.dart'; import 'pages/scan_result_page.dart'; import 'pages/settings_page.dart'; import 'pages/employee_page.dart'; import 'pages/store_page.dart'; import 'pages/report_page.dart'; import 'pages/app_market_page.dart'; import 'pages/help_page.dart'; import 'pages/about_page.dart'; import 'pages/policy_page.dart'; import 'pages/system_messages_page.dart'; final routerProvider = Provider((ref) { final authState = ref.watch(authProvider); return GoRouter( initialLocation: '/login', redirect: (context, state) { final isLoggedIn = authState.isLoggedIn; final loc = state.matchedLocation; final isPublicRoute = loc == '/login' || loc == '/settings/policy'; if (!isLoggedIn && !isPublicRoute) { return '/login'; } if (isLoggedIn && loc == '/login') { return '/home'; } return null; }, routes: [ GoRoute( path: '/login', builder: (context, state) => const LoginPage(), ), GoRoute( path: '/home', builder: (context, state) => const HomePage(), ), GoRoute( path: '/event/publish', builder: (context, state) => const EventPublishPage(), ), GoRoute( path: '/event/list', builder: (context, state) => const EventListPage(), ), GoRoute( path: '/order-work', builder: (context, state) { final tab = state.uri.queryParameters['tab'] ?? 'work'; return OrderWorkPage(initialTab: tab); }, ), GoRoute( path: '/work-order/:id', builder: (context, state) { final id = state.pathParameters['id']!; return WorkOrderDetailPage(orderId: id); }, ), GoRoute( path: '/order/:id', builder: (context, state) { final id = state.pathParameters['id']!; return OrderDetailPage(orderId: id); }, ), GoRoute( path: '/scan-result', builder: (context, state) { final code = state.uri.queryParameters['code'] ?? ''; return ScanResultPage(scanCode: code); }, ), GoRoute( path: '/messages', builder: (context, state) => const SystemMessagesPage(), ), GoRoute( path: '/settings', builder: (context, state) => const SettingsPage(), ), GoRoute( path: '/settings/employees', builder: (context, state) => const EmployeePage(), ), GoRoute( path: '/settings/store', builder: (context, state) => const StorePage(), ), GoRoute( path: '/settings/report', builder: (context, state) => const ReportPage(), ), GoRoute( path: '/settings/app-market', builder: (context, state) => const AppMarketPage(), ), GoRoute( path: '/settings/help', builder: (context, state) => const HelpPage(), ), GoRoute( path: '/settings/about', builder: (context, state) => const AboutPage(), ), GoRoute( path: '/settings/policy', builder: (context, state) { final type = state.uri.queryParameters['type'] ?? 'agreement'; return PolicyPage(type: type); }, ), ], ); });