From bac2ef44f8a9bccd3e83def53e3dadc4aa1d5d01 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 18 Feb 2021 22:57:58 +0100 Subject: [PATCH] Correctly load calendar events --- lib/widgets/dashboard/calendar.dart | 112 +++++++++++++++------------- 1 file changed, 59 insertions(+), 53 deletions(-) diff --git a/lib/widgets/dashboard/calendar.dart b/lib/widgets/dashboard/calendar.dart index 4a17f245..3b7508ed 100644 --- a/lib/widgets/dashboard/calendar.dart +++ b/lib/widgets/dashboard/calendar.dart @@ -95,59 +95,7 @@ class _DashboardCalendarWidgetState extends State _animationController.forward(); - WidgetsBinding.instance.addPostFrameCallback((timeStamp) { - // Process weight entries - BodyWeight weightProvider = Provider.of(context, listen: false); - for (var entry in weightProvider.items) { - final date = DateTime(entry.date.year, entry.date.month, entry.date.day); - if (!_events.containsKey(date)) { - _events[date] = []; - } - - // Add events to lists - _events[date].add(Event(EventType.weight, '${entry.weight} kg')); - } - - // Process workout sessions - WorkoutPlans plans = Provider.of(context, listen: false); - plans.fetchSessionData().then((entries) { - for (var entry in entries['results']) { - final session = WorkoutSession.fromJson(entry); - final date = DateTime(session.date.year, session.date.month, session.date.day); - if (!_events.containsKey(date)) { - _events[date] = []; - } - - var time = ''; - if (session.timeStart != null && session.timeEnd != null) { - time = '(${timeToString(session.timeStart)} - ${timeToString(session.timeEnd)})'; - } - - // Add events to lists - _events[date].add(Event( - EventType.session, - 'Impression: ${session.impressionAsString} $time', - )); - } - }); - - // Process nutritional plans - Nutrition nutritionProvider = Provider.of(context, listen: false); - for (var plan in nutritionProvider.items) { - for (var entry in plan.logEntriesValues.entries) { - final date = DateTime(entry.key.year, entry.key.month, entry.key.day); - if (!_events.containsKey(date)) { - _events[date] = []; - } - - // Add events to lists - _events[date].add(Event( - EventType.caloriesDiary, - '${entry.value.energy.toStringAsFixed(0)} kcal', - )); - } - } - }); + loadEvents(); } @override @@ -157,6 +105,64 @@ class _DashboardCalendarWidgetState extends State super.dispose(); } + void loadEvents() async { + // Process weight entries + BodyWeight weightProvider = Provider.of(context, listen: false); + for (var entry in weightProvider.items) { + final date = DateTime(entry.date.year, entry.date.month, entry.date.day); + if (!_events.containsKey(date)) { + _events[date] = []; + } + + // Add events to lists + _events[date].add(Event(EventType.weight, '${entry.weight} kg')); + } + + // Process workout sessions + WorkoutPlans plans = Provider.of(context, listen: false); + plans.fetchSessionData().then((entries) { + for (var entry in entries['results']) { + final session = WorkoutSession.fromJson(entry); + final date = DateTime(session.date.year, session.date.month, session.date.day); + if (!_events.containsKey(date)) { + _events[date] = []; + } + + var time = ''; + if (session.timeStart != null && session.timeEnd != null) { + time = '(${timeToString(session.timeStart)} - ${timeToString(session.timeEnd)})'; + } + + // Add events to lists + _events[date].add(Event( + EventType.session, + 'Impression: ${session.impressionAsString} $time', + )); + } + }); + + // Process nutritional plans + Nutrition nutritionProvider = Provider.of(context, listen: false); + for (var plan in nutritionProvider.items) { + for (var entry in plan.logEntriesValues.entries) { + final date = DateTime(entry.key.year, entry.key.month, entry.key.day); + if (!_events.containsKey(date)) { + _events[date] = []; + } + + // Add events to lists + _events[date].add(Event( + EventType.caloriesDiary, + '${entry.value.energy.toStringAsFixed(0)} kcal', + )); + } + } + + setState(() { + _events; + }); + } + void _onDaySelected(DateTime day, List events, List holidays) { log('CALLBACK: _onDaySelected'); setState(() {