From d101ec6bd39801b7a34e95e47c2da8151f523a2f Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Thu, 18 Feb 2021 23:08:31 +0100 Subject: [PATCH] Allow to add weight entries from the dashboard --- lib/widgets/dashboard/widgets.dart | 18 ++++++++++-------- lib/widgets/weight/forms.dart | 13 ++++++++++++- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/lib/widgets/dashboard/widgets.dart b/lib/widgets/dashboard/widgets.dart index cf06f1d2..1e634088 100644 --- a/lib/widgets/dashboard/widgets.dart +++ b/lib/widgets/dashboard/widgets.dart @@ -28,8 +28,10 @@ import 'package:wger/providers/nutrition.dart'; import 'package:wger/providers/workout_plans.dart'; import 'package:wger/screens/nutritional_plan_screen.dart'; import 'package:wger/screens/workout_plan_screen.dart'; +import 'package:wger/widgets/core/bottom_sheet.dart'; import 'package:wger/widgets/nutrition/charts.dart'; import 'package:wger/widgets/weight/charts.dart'; +import 'package:wger/widgets/weight/forms.dart'; class DashboardNutritionWidget extends StatefulWidget { const DashboardNutritionWidget({ @@ -153,15 +155,15 @@ class _DashboardWeightWidgetState extends State { mainAxisAlignment: MainAxisAlignment.end, children: [ TextButton( - child: const Text('Action one'), - onPressed: () {}, + child: Text(AppLocalizations.of(context).newEntry), + onPressed: () async { + showFormBottomSheet( + context, + AppLocalizations.of(context).newEntry, + WeightForm(), + ); + }, ), - const SizedBox(width: 8), - TextButton( - child: const Text('Action two'), - onPressed: () {}, - ), - const SizedBox(width: 8), ], ), ], diff --git a/lib/widgets/weight/forms.dart b/lib/widgets/weight/forms.dart index a0d5e782..f894402e 100644 --- a/lib/widgets/weight/forms.dart +++ b/lib/widgets/weight/forms.dart @@ -17,7 +17,7 @@ class WeightForm extends StatelessWidget { WeightForm([weightEntry]) { this._weightEntry = weightEntry ?? WeightEntry(); - weightController.text = _weightEntry.weight.toString(); + weightController.text = _weightEntry.weight == null ? '' : _weightEntry.weight.toString(); } @override @@ -59,6 +59,17 @@ class WeightForm extends StatelessWidget { onSaved: (newValue) { _weightEntry.weight = double.parse(newValue); }, + validator: (value) { + if (value.isEmpty) { + return 'Please enter a weight'; + } + try { + double.parse(value); + } catch (error) { + return 'Please enter a valid number'; + } + return null; + }, ), ElevatedButton( child: Text(AppLocalizations.of(context).save),