diff --git a/lib/widgets/nutrition/helpers.dart b/lib/widgets/nutrition/helpers.dart index 766386b1..24ae27ec 100644 --- a/lib/widgets/nutrition/helpers.dart +++ b/lib/widgets/nutrition/helpers.dart @@ -19,6 +19,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:wger/models/nutrition/meal.dart'; import 'package:wger/models/nutrition/nutritional_values.dart'; import 'package:wger/widgets/core/core.dart'; @@ -49,3 +50,18 @@ String getShortNutritionValues(NutritionalValues values, BuildContext context) { final f = '${loc.fatShort} ${loc.gValue(values.fat.toStringAsFixed(0))}'; return '$e / $p / $c / $f'; } + +String getKcalConsumed(Meal meal, BuildContext context) { + final consumed = + meal.diaryEntriesToday.map((e) => e.nutritionalValues.energy).fold(0.0, (a, b) => a + b); + return AppLocalizations.of(context).kcalValue(consumed.toStringAsFixed(0)); +} + +String getKcalConsumedVsPlanned(Meal meal, BuildContext context) { + final planned = meal.plannedNutritionalValues.energy; + final consumed = + meal.diaryEntriesToday.map((e) => e.nutritionalValues.energy).fold(0.0, (a, b) => a + b); + final loc = AppLocalizations.of(context); + + return '${consumed.toStringAsFixed(0)} / ${planned.toStringAsFixed(0)} ${loc.kcal}'; +} diff --git a/lib/widgets/nutrition/meal.dart b/lib/widgets/nutrition/meal.dart index 1e7abb3d..66f104be 100644 --- a/lib/widgets/nutrition/meal.dart +++ b/lib/widgets/nutrition/meal.dart @@ -318,14 +318,25 @@ class MealHeader extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - ((_meal.time != null) ? '${_meal.time!.format(context)} ' : '') + _meal.name, - style: Theme.of(context).textTheme.titleMedium, + _meal.name, + style: Theme.of(context).textTheme.titleLarge, + ), + Row( + children: [ + if (_meal.time != null) + Text( + _meal.time!.format(context), + style: Theme.of(context).textTheme.titleSmall, + ), + if (_meal.time != null) const SizedBox(width: 12), + Text( + _meal.isRealMeal + ? getKcalConsumedVsPlanned(_meal, context) + : getKcalConsumed(_meal, context), + style: Theme.of(context).textTheme.titleSmall, + ), + ], ), - if (_meal.isRealMeal) - Text( - getShortNutritionValues(_meal.plannedNutritionalValues, context), - style: Theme.of(context).textTheme.titleSmall, - ), ], )), ]), diff --git a/test/nutrition/goldens/nutritional_plan_1_default_view.png b/test/nutrition/goldens/nutritional_plan_1_default_view.png index bfecdd3b..b8d3ab02 100644 Binary files a/test/nutrition/goldens/nutritional_plan_1_default_view.png and b/test/nutrition/goldens/nutritional_plan_1_default_view.png differ diff --git a/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png b/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png index 52ced1bb..537431b6 100644 Binary files a/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png and b/test/nutrition/goldens/nutritional_plan_2_one_meal_with_ingredients.png differ diff --git a/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png b/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png index 8a3f3b81..7b709001 100644 Binary files a/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png and b/test/nutrition/goldens/nutritional_plan_3_both_meals_with_ingredients.png differ