import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../providers/supplement_provider.dart'; import '../providers/settings_provider.dart'; import 'supplements_list_screen.dart'; import 'history_screen.dart'; import 'add_supplement_screen.dart'; import 'settings_screen.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State createState() => _HomeScreenState(); } class _HomeScreenState extends State { int _currentIndex = 0; final List _screens = [ const SupplementsListScreen(), const HistoryScreen(), const SettingsScreen(), ]; @override void initState() { super.initState(); WidgetsBinding.instance.addPostFrameCallback((_) { context.read().initialize(); _startPersistentReminderCheck(); }); } void _startPersistentReminderCheck() { // Check immediately and then every 3 minutes (faster than any retry interval) _checkPersistentReminders(); // Set up periodic checking every 3 minutes to ensure we catch all retry intervals Future.doWhile(() async { await Future.delayed(const Duration(minutes: 3)); if (mounted) { await _checkPersistentReminders(); return true; } return false; }); } Future _checkPersistentReminders() async { if (!mounted) return; try { print('SupplementsLog: 📱 === HOME SCREEN: Checking persistent reminders ==='); final supplementProvider = context.read(); final settingsProvider = context.read(); print('SupplementsLog: 📱 Settings: persistent=${settingsProvider.persistentReminders}, interval=${settingsProvider.reminderRetryInterval}, max=${settingsProvider.maxRetryAttempts}'); await supplementProvider.checkPersistentRemindersWithSettings( persistentReminders: settingsProvider.persistentReminders, reminderRetryInterval: settingsProvider.reminderRetryInterval, maxRetryAttempts: settingsProvider.maxRetryAttempts, ); print('SupplementsLog: 📱 === HOME SCREEN: Persistent reminder check complete ==='); } catch (e) { print('SupplementsLog: Error checking persistent reminders: $e'); } } @override Widget build(BuildContext context) { return Scaffold( body: _screens[_currentIndex], bottomNavigationBar: BottomNavigationBar( currentIndex: _currentIndex, onTap: (index) { setState(() { _currentIndex = index; }); }, type: BottomNavigationBarType.fixed, items: const [ BottomNavigationBarItem( icon: Icon(Icons.medication), label: 'Supplements', ), BottomNavigationBarItem( icon: Icon(Icons.history), label: 'History', ), BottomNavigationBarItem( icon: Icon(Icons.settings), label: 'Settings', ), ], ), floatingActionButton: _currentIndex == 0 ? FloatingActionButton( onPressed: () async { await Navigator.of(context).push( MaterialPageRoute( builder: (context) => const AddSupplementScreen(), ), ); // Refresh the list when returning from add screen if (context.mounted) { context.read().loadSupplements(); } }, child: const Icon(Icons.add), ) : null, ); } }