feat adds proper syncing feature

Signed-off-by: Menno van Leeuwen <menno@vleeuwen.me>
This commit is contained in:
2025-08-27 20:51:29 +02:00
parent b0d5130cbf
commit 2017fd097d
22 changed files with 1518 additions and 3258 deletions

View File

@@ -1,9 +1,10 @@
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/sync_provider.dart';
import 'providers/simple_sync_provider.dart';
import 'screens/home_screen.dart';
void main() {
@@ -23,14 +24,27 @@ class MyApp extends StatelessWidget {
ChangeNotifierProvider(
create: (context) => SettingsProvider()..initialize(),
),
ChangeNotifierProxyProvider<SupplementProvider, SyncProvider>(
create: (context) => SyncProvider(context.read<SupplementProvider>())..initialize(),
update: (context, supplementProvider, syncProvider) =>
syncProvider ?? SyncProvider(supplementProvider)..initialize(),
ChangeNotifierProvider(
create: (context) => SimpleSyncProvider(),
),
],
child: Consumer<SettingsProvider>(
builder: (context, settingsProvider, child) {
child: Consumer2<SettingsProvider, SimpleSyncProvider>(
builder: (context, settingsProvider, syncProvider, child) {
// Set up the sync completion callback to refresh supplement data
WidgetsBinding.instance.addPostFrameCallback((_) {
final supplementProvider = context.read<SupplementProvider>();
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');
}
});
});
return MaterialApp(
title: 'Supplements Tracker',
theme: ThemeData(