From d0ec5428017d192641663c122c2a6d049b920ab8 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Mon, 24 May 2021 11:58:54 +0200 Subject: [PATCH] Add methods to allow editing a workout day --- lib/providers/workout_plans.dart | 5 +++++ lib/widgets/workouts/forms.dart | 23 +++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/lib/providers/workout_plans.dart b/lib/providers/workout_plans.dart index cfd0f7a0..4078c972 100644 --- a/lib/providers/workout_plans.dart +++ b/lib/providers/workout_plans.dart @@ -380,6 +380,11 @@ class WorkoutPlansProvider extends WgerBaseProvider with ChangeNotifier { return day; } + Future editDay(Day day) async { + await patch(day.toJson(), makeUrl(_daysUrlPath, id: day.id)); + notifyListeners(); + } + Future deleteDay(Day day) async { await deleteRequest(_daysUrlPath, day.id!); for (var workout in _workoutPlans) { diff --git a/lib/widgets/workouts/forms.dart b/lib/widgets/workouts/forms.dart index d03e098e..b6baff1f 100644 --- a/lib/widgets/workouts/forms.dart +++ b/lib/widgets/workouts/forms.dart @@ -132,7 +132,6 @@ class DayCheckbox extends StatefulWidget { } class _DayCheckboxState extends State { - bool _isSelected = false; @override Widget build(BuildContext context) { return CheckboxListTile( @@ -141,11 +140,10 @@ class _DayCheckboxState extends State { widget._dayNr, Localizations.localeOf(context).languageCode, )), - value: _isSelected, + value: widget._day.daysOfWeek.contains(widget._dayNr), onChanged: (bool? newValue) { setState(() { - _isSelected = newValue!; - if (!newValue) { + if (!newValue!) { widget._day.daysOfWeek.remove(widget._dayNr); } else { widget._day.daysOfWeek.add(widget._dayNr); @@ -164,6 +162,9 @@ class DayFormWidget extends StatefulWidget { DayFormWidget(this.workout, [Day? day]) { this._day = day ?? Day(); _day.workoutId = this.workout.id!; + if (_day.id != null) { + dayController.text = day!.description; + } } @override @@ -215,10 +216,16 @@ class _DayFormWidgetState extends State { _form.currentState!.save(); try { - Provider.of(context, listen: false).addDay( - widget._day, - widget.workout, - ); + if (widget._day.id == null) { + Provider.of(context, listen: false).addDay( + widget._day, + widget.workout, + ); + } else { + Provider.of(context, listen: false).editDay( + widget._day, + ); + } widget.dayController.clear(); Navigator.of(context).pop();