import 'package:flutter/material.dart'; import 'book_screen.dart'; import 'calendar_screen.dart'; import 'settings_screen.dart'; import 'target_screen.dart'; import '../widgets/bottom_nav.dart'; //import 'login_screen.dart'; import 'camera_screen.dart'; import 'spectator_screen.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../utils/translations.dart'; import '../utils/target_colors.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State { int _selectedIndex = 1; // Default to Shooting Screen String _selectedLanguage = 'English'; String _selectedTarget = 'assets/target.png'; late Color _backgroundColor; static final List _pages = [ BookScreen(), TargetScreen(), Placeholder(), // Placeholder for Scan - optional CalendarScreen(), SettingsScreen(), ]; final List _pageTitles = [ 'Book', 'Shooting', 'Scan', 'Calendar', 'Settings' ]; @override void initState() { super.initState(); // Initialize with default target background color _backgroundColor = TargetColors.getBackgroundColor('assets/target.png'); _loadLanguage(); _loadSelectedTarget(); } String _t(String key) { return AppTranslations.translate(key, _selectedLanguage); } Future _loadLanguage() async { final prefs = await SharedPreferences.getInstance(); setState(() { _selectedLanguage = prefs.getString('language') ?? 'English'; }); } Future _loadSelectedTarget() async { final prefs = await SharedPreferences.getInstance(); final selectedTarget = prefs.getString('selectedTarget') ?? 'assets/target.png'; setState(() { _selectedTarget = selectedTarget; _backgroundColor = TargetColors.getBackgroundColor(selectedTarget); }); } void _onItemTapped(int index) { if (index == 2) { _openCameraScan(); return; } setState(() { _selectedIndex = index; }); // Reload language when switching screens to pick up any changes from Settings _loadLanguage(); } //void _logout() { // Navigator.of(context).pushAndRemoveUntil( // MaterialPageRoute(builder: (context) => const LoginScreen()), // (Route route) => false, // ); //} // When opening the camera screen, ensure the shooting screen is always selected after returning void _openCameraScan() async { // Navigate to CameraScreen await Navigator.of(context).push( MaterialPageRoute(builder: (context) => const CameraScreen()), ); // After returning, ensure that Shooting screen (index 1) is selected setState(() { _selectedIndex = 1; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( _t(_pageTitles[_selectedIndex]), style: const TextStyle(color: Colors.white), ), backgroundColor: Colors.grey[900], iconTheme: const IconThemeData(color: Colors.white), automaticallyImplyLeading: false, scrolledUnderElevation: 0, // For Material 3 (Flutter 3.7+) actions: [ if (_selectedIndex == 1) IconButton( icon: const Icon(Icons.visibility_rounded, color: Colors.white), onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => SpectatorScreen( selectedLanguage: _selectedLanguage, ), ), ); }, ), Padding( padding: const EdgeInsets.only(right: 16.0), child: Center( child: Text( 'V1.0.3', style: TextStyle( color: Colors.grey[400], fontSize: 12, fontWeight: FontWeight.w500, ), ), ), ), ], ), backgroundColor: _backgroundColor, body: _pages[_selectedIndex], bottomNavigationBar: BottomNavBar( selectedIndex: _selectedIndex, onItemTapped: _onItemTapped, selectedLanguage: _selectedLanguage, ), ); } }