| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- 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/init_page.dart';
- import 'pages/login/login_page.dart';
- import 'pages/dashboard/dashboard_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';
- if (!authState.isInitialized && !isInit) return '/init';
- if (authState.isInitialized && !authState.isLoggedIn && !isLogin) 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: '/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()),
- GoRoute(path: 'customers/: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()),
- ],
- ),
- ],
- );
- });
|