| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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';
- 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(),
- ),
- 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(),
- ),
- ],
- ),
- ],
- );
- });
|