import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'providers/settings_provider.dart'; import 'providers/supplement_provider.dart'; import 'providers/simple_sync_provider.dart'; import 'screens/home_screen.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MultiProvider( providers: [ ChangeNotifierProvider( create: (context) => SupplementProvider()..initialize(), ), ChangeNotifierProvider( create: (context) => SettingsProvider()..initialize(), ), ChangeNotifierProvider( create: (context) => SimpleSyncProvider(), ), ], child: Consumer2( builder: (context, settingsProvider, syncProvider, child) { // Set up the sync completion callback to refresh supplement data // and initialize auto-sync integration WidgetsBinding.instance.addPostFrameCallback((_) { final supplementProvider = context.read(); // Set up sync completion callback syncProvider.setOnSyncCompleteCallback(() async { if (kDebugMode) { print('SupplementsLog: Sync completed, refreshing UI data...'); } await supplementProvider.loadSupplements(); await supplementProvider.loadTodayIntakes(); if (kDebugMode) { print('SupplementsLog: UI data refreshed after sync'); } }); // Initialize auto-sync service syncProvider.initializeAutoSync(settingsProvider); // Set up auto-sync callback for data changes supplementProvider.setOnDataChangedCallback(() { syncProvider.triggerAutoSyncIfEnabled(); }); }); return MaterialApp( title: 'Supplements Tracker', theme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.blue, brightness: Brightness.light, ), useMaterial3: true, ), darkTheme: ThemeData( colorScheme: ColorScheme.fromSeed( seedColor: Colors.blue, brightness: Brightness.dark, ), useMaterial3: true, ), themeMode: settingsProvider.themeMode, home: const HomeScreen(), debugShowCheckedModeBanner: false, ); }, ), ); } }