| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- import 'package:flutter_riverpod/flutter_riverpod.dart';
- import 'package:go_router/go_router.dart';
- import '../../providers/auth_provider.dart';
- import 'pages/login/init_page.dart';
- import 'pages/login/login_page.dart';
- import 'pages/dashboard/dashboard_page.dart';
- import 'pages/dashboard/agent_switch_page.dart';
- import 'pages/orders/order_list_page.dart';
- import 'pages/orders/order_edit_page.dart';
- import 'pages/customers/customer_list_page.dart';
- import 'pages/customers/customer_detail_page.dart';
- import 'pages/catalog/catalog_page.dart';
- import 'pages/promotions/promotion_list_page.dart';
- import 'pages/payments/payments_page.dart';
- import 'pages/statistics/statistics_page.dart';
- import 'pages/sync/sync_page.dart';
- import 'pages/sync/sync_settings_page.dart';
- final routerProvider = Provider<GoRouter>((ref) {
- final authState = ref.watch(authProvider);
- return GoRouter(
- initialLocation: '/login',
- redirect: (context, state) {
- final isLogin = state.matchedLocation == '/login';
- final isInit = state.matchedLocation == '/init';
- final isSyncSettings = state.matchedLocation == '/sync-settings';
- if (!authState.isInitialized && !isInit && !isSyncSettings) {
- return '/init';
- }
- if (authState.isInitialized &&
- !authState.isLoggedIn &&
- !isLogin &&
- !isSyncSettings) {
- return '/login';
- }
- if (authState.isLoggedIn && isLogin) return '/dashboard';
- if (authState.isLoggedIn && isInit) return '/dashboard';
- return null;
- },
- routes: [
- GoRoute(path: '/init', builder: (_, __) => const InitPage()),
- GoRoute(path: '/login', builder: (_, __) => const LoginPage()),
- GoRoute(
- path: '/sync-settings',
- builder: (_, __) => const SyncSettingsPage(),
- ),
- GoRoute(
- path: '/dashboard',
- builder: (_, __) => const DashboardPage(),
- routes: [
- GoRoute(path: 'orders', builder: (_, __) => const OrderListPage()),
- GoRoute(
- path: 'orders/new',
- builder: (_, state) {
- final idCliente = int.tryParse(
- state.uri.queryParameters['cliente'] ?? '',
- );
- return OrderEditPage(idCliente: idCliente);
- },
- ),
- GoRoute(
- path: 'orders/:id',
- builder: (_, state) =>
- OrderEditPage(id: int.parse(state.pathParameters['id']!)),
- ),
- GoRoute(
- path: 'customers',
- builder: (_, __) => const CustomerListPage(),
- routes: [
- GoRoute(
- path: ':id',
- builder: (_, state) => CustomerDetailPage(
- id: int.parse(state.pathParameters['id']!),
- ),
- ),
- ],
- ),
- GoRoute(path: 'catalog', builder: (_, __) => const CatalogPage()),
- GoRoute(
- path: 'promotions',
- builder: (_, __) => const PromotionListPage(),
- ),
- GoRoute(path: 'payments', builder: (_, __) => const PaymentsPage()),
- GoRoute(
- path: 'statistics',
- builder: (_, __) => const StatisticsPage(),
- ),
- GoRoute(path: 'sync', builder: (_, __) => const SyncPage()),
- GoRoute(
- path: 'sync/settings',
- builder: (_, __) => const SyncSettingsPage(),
- ),
- GoRoute(
- path: 'switch-agent',
- builder: (_, __) => const AgentSwitchPage(),
- ),
- ],
- ),
- ],
- );
- });
|