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'; 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', builder: (_, __) => const StockInListScreen()), GoRoute( path: '/stock-in/new', builder: (_, __) => const StockInFormScreen()), GoRoute( path: '/stock-out', builder: (_, __) => const StockOutListScreen()), GoRoute( path: '/inventory', builder: (_, __) => const InventoryListScreen()), GoRoute( path: '/inventory/check', builder: (_, __) => const InventoryCheckScreen()), GoRoute( path: '/partners', builder: (_, __) => const PartnersScreen()), GoRoute( path: '/finance', builder: (_, __) => const FinanceScreen()), GoRoute( path: '/products', builder: (_, __) => const ProductsScreen()), GoRoute( path: '/settings', builder: (_, __) => const SettingsScreen()), ], ), ], ); });