import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:go_router/go_router.dart'; import '../../screens/auth/login_screen.dart'; import '../../screens/shell/app_shell.dart'; import '../../screens/stock_in/stock_in_list_screen.dart'; import '../../screens/stock_in/stock_in_form_screen.dart'; import '../../screens/stock_out/stock_out_list_screen.dart'; import '../../screens/inventory/inventory_list_screen.dart'; import '../../screens/inventory/inventory_check_screen.dart'; import '../../screens/partners/partners_screen.dart'; import '../../screens/finance/finance_screen.dart'; import '../../screens/products/products_screen.dart'; import '../../screens/settings/settings_screen.dart'; import '../auth/auth_state.dart'; Page _noTransition(Widget child) => NoTransitionPage(child: child); final appRouterProvider = Provider((ref) { final authState = ref.watch(authStateProvider); return GoRouter( initialLocation: '/login', redirect: (context, state) { final isLoggedIn = authState.isLoggedIn; final isLoginRoute = state.matchedLocation == '/login'; if (!isLoggedIn && !isLoginRoute) return '/login'; if (isLoggedIn && isLoginRoute) return '/stock-in'; return null; }, routes: [ GoRoute( path: '/login', builder: (context, state) => const LoginScreen(), ), ShellRoute( builder: (context, state, child) => AppShell(child: child), routes: [ GoRoute( path: '/stock-in', pageBuilder: (_, __) => _noTransition(const StockInListScreen())), GoRoute( path: '/stock-in/new', pageBuilder: (_, __) => _noTransition(const StockInFormScreen())), GoRoute( path: '/stock-out', pageBuilder: (_, __) => _noTransition(const StockOutListScreen())), GoRoute( path: '/inventory', pageBuilder: (_, __) => _noTransition(const InventoryListScreen())), GoRoute( path: '/inventory/check', pageBuilder: (_, __) => _noTransition(const InventoryCheckScreen())), GoRoute( path: '/partners', pageBuilder: (_, __) => _noTransition(const PartnersScreen())), GoRoute( path: '/finance', pageBuilder: (_, __) => _noTransition(const FinanceScreen())), GoRoute( path: '/products', pageBuilder: (_, __) => _noTransition(const ProductsScreen())), GoRoute( path: '/settings', pageBuilder: (_, __) => _noTransition(const SettingsScreen())), ], ), ], ); });