Skip to content

Commit 6b2f49e

Browse files
authored
Merge pull request #603 from wger-project/show-kcal-consumed-vs-planned-on-meal-tiles
show kcal consumed vs planned, on meal tiles
2 parents 43f9d5c + d2ac12b commit 6b2f49e

File tree

5 files changed

+34
-7
lines changed

5 files changed

+34
-7
lines changed

lib/widgets/nutrition/helpers.dart

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import 'package:flutter/cupertino.dart';
2020
import 'package:flutter/material.dart';
2121
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
22+
import 'package:wger/models/nutrition/meal.dart';
2223
import 'package:wger/models/nutrition/nutritional_values.dart';
2324
import 'package:wger/widgets/core/core.dart';
2425

@@ -49,3 +50,18 @@ String getShortNutritionValues(NutritionalValues values, BuildContext context) {
4950
final f = '${loc.fatShort} ${loc.gValue(values.fat.toStringAsFixed(0))}';
5051
return '$e / $p / $c / $f';
5152
}
53+
54+
String getKcalConsumed(Meal meal, BuildContext context) {
55+
final consumed =
56+
meal.diaryEntriesToday.map((e) => e.nutritionalValues.energy).fold(0.0, (a, b) => a + b);
57+
return AppLocalizations.of(context).kcalValue(consumed.toStringAsFixed(0));
58+
}
59+
60+
String getKcalConsumedVsPlanned(Meal meal, BuildContext context) {
61+
final planned = meal.plannedNutritionalValues.energy;
62+
final consumed =
63+
meal.diaryEntriesToday.map((e) => e.nutritionalValues.energy).fold(0.0, (a, b) => a + b);
64+
final loc = AppLocalizations.of(context);
65+
66+
return '${consumed.toStringAsFixed(0)} / ${planned.toStringAsFixed(0)} ${loc.kcal}';
67+
}

lib/widgets/nutrition/meal.dart

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -318,14 +318,25 @@ class MealHeader extends StatelessWidget {
318318
crossAxisAlignment: CrossAxisAlignment.start,
319319
children: [
320320
Text(
321-
((_meal.time != null) ? '${_meal.time!.format(context)} ' : '') + _meal.name,
322-
style: Theme.of(context).textTheme.titleMedium,
321+
_meal.name,
322+
style: Theme.of(context).textTheme.titleLarge,
323+
),
324+
Row(
325+
children: [
326+
if (_meal.time != null)
327+
Text(
328+
_meal.time!.format(context),
329+
style: Theme.of(context).textTheme.titleSmall,
330+
),
331+
if (_meal.time != null) const SizedBox(width: 12),
332+
Text(
333+
_meal.isRealMeal
334+
? getKcalConsumedVsPlanned(_meal, context)
335+
: getKcalConsumed(_meal, context),
336+
style: Theme.of(context).textTheme.titleSmall,
337+
),
338+
],
323339
),
324-
if (_meal.isRealMeal)
325-
Text(
326-
getShortNutritionValues(_meal.plannedNutritionalValues, context),
327-
style: Theme.of(context).textTheme.titleSmall,
328-
),
329340
],
330341
)),
331342
]),
-1.44 KB
Loading
-345 Bytes
Loading
234 Bytes
Loading

0 commit comments

Comments
 (0)