diff --git a/lib/models/nutrition/nutritional_plan.dart b/lib/models/nutrition/nutritional_plan.dart index a4527ec1d..1d64758f9 100644 --- a/lib/models/nutrition/nutritional_plan.dart +++ b/lib/models/nutrition/nutritional_plan.dart @@ -56,8 +56,8 @@ class NutritionalPlan { @JsonKey(required: true, name: 'goal_fat') late num? goalFat; - @JsonKey(required: true, name: 'goal_fibers') - late num? goalFibers; + @JsonKey(required: true, name: 'goal_fiber') + late num? goalFiber; @JsonKey(includeFromJson: false, includeToJson: false, defaultValue: []) List meals = []; @@ -74,7 +74,7 @@ class NutritionalPlan { this.goalProtein, this.goalCarbohydrates, this.goalFat, - this.goalFibers, + this.goalFiber, List? meals, List? diaryEntries, }) { @@ -89,7 +89,7 @@ class NutritionalPlan { goalEnergy = null; goalProtein = null; goalCarbohydrates = null; - goalFibers = null; + goalFiber = null; goalFat = null; } @@ -110,7 +110,7 @@ class NutritionalPlan { } bool get hasAnyAdvancedGoals { - return goalFibers != null; + return goalFiber != null; } /// Calculations @@ -126,7 +126,7 @@ class NutritionalPlan { fat: goalFat?.toDouble(), protein: goalProtein?.toDouble(), carbohydrates: goalCarbohydrates?.toDouble(), - fiber: goalFibers?.toDouble(), + fiber: goalFiber?.toDouble(), ); } // if there are no set goals and no defined meals, the goals are still undefined diff --git a/lib/models/nutrition/nutritional_plan.g.dart b/lib/models/nutrition/nutritional_plan.g.dart index 76f7c4703..2e979f9a5 100644 --- a/lib/models/nutrition/nutritional_plan.g.dart +++ b/lib/models/nutrition/nutritional_plan.g.dart @@ -18,7 +18,7 @@ NutritionalPlan _$NutritionalPlanFromJson(Map json) { 'goal_protein', 'goal_carbohydrates', 'goal_fat', - 'goal_fibers' + 'goal_fiber' ], ); return NutritionalPlan( @@ -30,12 +30,11 @@ NutritionalPlan _$NutritionalPlanFromJson(Map json) { goalProtein: json['goal_protein'] as num?, goalCarbohydrates: json['goal_carbohydrates'] as num?, goalFat: json['goal_fat'] as num?, - goalFibers: json['goal_fibers'] as num?, + goalFiber: json['goal_fiber'] as num?, ); } -Map _$NutritionalPlanToJson(NutritionalPlan instance) => - { +Map _$NutritionalPlanToJson(NutritionalPlan instance) => { 'id': instance.id, 'description': instance.description, 'creation_date': toDate(instance.creationDate), @@ -44,5 +43,5 @@ Map _$NutritionalPlanToJson(NutritionalPlan instance) => 'goal_protein': instance.goalProtein, 'goal_carbohydrates': instance.goalCarbohydrates, 'goal_fat': instance.goalFat, - 'goal_fibers': instance.goalFibers, + 'goal_fiber': instance.goalFiber, }; diff --git a/lib/screens/log_meal_screen.dart b/lib/screens/log_meal_screen.dart index 54e927b63..158ae8edf 100644 --- a/lib/screens/log_meal_screen.dart +++ b/lib/screens/log_meal_screen.dart @@ -17,11 +17,9 @@ */ import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; import 'package:wger/models/nutrition/meal.dart'; -import 'package:wger/models/nutrition/meal_item.dart'; import 'package:wger/providers/nutrition.dart'; import 'package:wger/widgets/nutrition/meal.dart'; import 'package:wger/widgets/nutrition/widgets.dart'; @@ -40,25 +38,11 @@ class LogMealScreen extends StatefulWidget { } class _LogMealScreenState extends State { - late TextEditingController _controller; - int portionPct = 100; - - @override - void initState() { - super.initState(); - _controller = TextEditingController(); - } - - @override - void dispose() { - _controller.dispose(); - super.dispose(); - } + double portionPct = 100; @override Widget build(BuildContext context) { final args = ModalRoute.of(context)!.settings.arguments as LogMealArguments; - _controller.text = portionPct.toString(); final meal = args.meal.copyWith( mealItems: args.meal.mealItems .map((mealItem) => mealItem.copyWith(amount: mealItem.amount * portionPct / 100)) @@ -71,7 +55,10 @@ class _LogMealScreenState extends State { body: Consumer( builder: (context, nutritionProvider, child) => SingleChildScrollView( child: Padding( - padding: const EdgeInsets.all(8.0), + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 16, + ), child: Column( children: [ Text(meal.name, style: Theme.of(context).textTheme.headlineSmall), @@ -83,28 +70,17 @@ class _LogMealScreenState extends State { const NutritionDiaryheader(), ...meal.mealItems .map((item) => MealItemWidget(item, viewMode.withAllDetails, false)), - Row( - children: [ - Text('Portion size'), - Expanded( - child: TextField( - maxLength: 4, - maxLengthEnforcement: MaxLengthEnforcement.enforced, - keyboardType: TextInputType.number, - decoration: InputDecoration( - hintText: 'Enter the portion size as a percent', - ), - controller: _controller, - onChanged: (value) { - var v = int.tryParse(value); - if (v == null) return; - setState(() { - portionPct = v; - }); - }, - ), - ), - ], + const SizedBox(height: 32), + Text( + 'Portion: ${portionPct.round()} %', + style: Theme.of(context).textTheme.bodyLarge, + ), + Slider.adaptive( + min: 0, + max: 150, + divisions: 30, + onChanged: (value) => setState(() => portionPct = value), + value: portionPct, ), ], ), diff --git a/lib/widgets/nutrition/charts.dart b/lib/widgets/nutrition/charts.dart index 5b3c09390..4fe7d2fb3 100644 --- a/lib/widgets/nutrition/charts.dart +++ b/lib/widgets/nutrition/charts.dart @@ -401,7 +401,7 @@ class NutritionalDiaryChartWidgetFlState extends State { widget._plan.goalProtein = null; widget._plan.goalCarbohydrates = null; widget._plan.goalFat = null; - widget._plan.goalFibers = null; + widget._plan.goalFiber = null; case GoalType.basic: - widget._plan.goalFibers = null; + widget._plan.goalFiber = null; break; default: break; @@ -562,11 +562,11 @@ class _PlanFormState extends State { if (_goalType == GoalType.advanced) GoalMacros( - val: widget._plan.goalFibers?.toString(), + val: widget._plan.goalFiber?.toString(), label: AppLocalizations.of(context).goalFiber, suffix: AppLocalizations.of(context).g, - onSave: (double value) => widget._plan.goalFibers = value, - key: const Key('field-goal-fibers'), + onSave: (double value) => widget._plan.goalFiber = value, + key: const Key('field-goal-fiber'), ), ElevatedButton( key: const Key(SUBMIT_BUTTON_KEY_NAME), diff --git a/test/fixtures/nutrition/nutritional_plan_detail_response.json b/test/fixtures/nutrition/nutritional_plan_detail_response.json index 078fe9a31..42b0ab0fa 100644 --- a/test/fixtures/nutrition/nutritional_plan_detail_response.json +++ b/test/fixtures/nutrition/nutritional_plan_detail_response.json @@ -7,6 +7,6 @@ "goal_protein": null, "goal_carbohydrates": null, "goal_fat": null, - "goal_fibers": null, + "goal_fiber": null, "language": 1 } \ No newline at end of file diff --git a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json index b2a7156e1..233d2e1ad 100644 --- a/test/fixtures/nutrition/nutritional_plan_info_detail_response.json +++ b/test/fixtures/nutrition/nutritional_plan_info_detail_response.json @@ -11,7 +11,7 @@ "goal_protein": null, "goal_carbohydrates": null, "goal_fat": null, - "goal_fibers": null, + "goal_fiber": null, "description": "", "get_nutritional_values": { "total": {