import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'core/theme/app_theme.dart'; import 'features/auth/presentation/presentation.dart'; import 'features/home/presentation/pages/home_page.dart'; import 'features/products/presentation/pages/products_page.dart'; import 'features/categories/presentation/pages/categories_page.dart'; import 'features/settings/presentation/pages/settings_page.dart'; import 'features/settings/presentation/providers/theme_provider.dart'; import 'shared/widgets/app_bottom_nav.dart'; /// Root application widget with authentication wrapper class RetailApp extends ConsumerStatefulWidget { const RetailApp({super.key}); @override ConsumerState createState() => _RetailAppState(); } class _RetailAppState extends ConsumerState { @override void initState() { super.initState(); // Initialize auth state on app start WidgetsBinding.instance.addPostFrameCallback((_) { ref.read(authProvider.notifier).initialize(); }); } @override Widget build(BuildContext context) { final themeMode = ref.watch(themeModeFromThemeProvider); return MaterialApp( title: 'Retail POS', debugShowCheckedModeBanner: false, theme: AppTheme.lightTheme(), darkTheme: AppTheme.darkTheme(), themeMode: themeMode, // Wrap the home with AuthWrapper to require login home: const AuthWrapper( child: MainScreen(), ), ); } } /// Main screen with bottom navigation (only accessible after login) class MainScreen extends ConsumerStatefulWidget { const MainScreen({super.key}); @override ConsumerState createState() => _MainScreenState(); } class _MainScreenState extends ConsumerState { int _currentIndex = 0; final List _pages = const [ HomePage(), ProductsPage(), CategoriesPage(), SettingsPage(), ]; @override Widget build(BuildContext context) { return Scaffold( body: IndexedStack( index: _currentIndex, children: _pages, ), bottomNavigationBar: AppBottomNav( currentIndex: _currentIndex, onTap: (index) { setState(() { _currentIndex = index; }); }, ), ); } }