From f5ab51fd5bb636980d3b417b2ce52a9b1b87d647 Mon Sep 17 00:00:00 2001 From: Roland Geider Date: Sat, 18 Jan 2025 13:55:42 +0100 Subject: [PATCH] Repetitions are not integers anymore --- lib/helpers/misc.dart | 2 +- lib/models/workouts/log.dart | 8 ++++---- lib/models/workouts/log.g.dart | 4 ++-- lib/providers/gym_state.dart | 8 +++++--- lib/widgets/routines/gym_mode.dart | 6 +++--- pubspec.lock | 26 +++++++++++++++++++++++++- 6 files changed, 40 insertions(+), 14 deletions(-) diff --git a/lib/helpers/misc.dart b/lib/helpers/misc.dart index b8e38979..1505cfa2 100644 --- a/lib/helpers/misc.dart +++ b/lib/helpers/misc.dart @@ -24,7 +24,7 @@ import 'package:wger/models/workouts/weight_unit.dart'; /// Returns the text representation for a single setting, used in the gym mode String repText( - int? reps, + num? reps, RepetitionUnit repetitionUnitObj, num? weight, WeightUnit weightUnitObj, diff --git a/lib/models/workouts/log.dart b/lib/models/workouts/log.dart index 793dba31..dd89f960 100644 --- a/lib/models/workouts/log.dart +++ b/lib/models/workouts/log.dart @@ -45,11 +45,11 @@ class Log { @JsonKey(required: false, name: 'rir_target') String? rirTarget; - @JsonKey(required: true, name: 'repetitions') - late int repetitions; + @JsonKey(required: true, fromJson: stringToNum, name: 'repetitions') + late num? repetitions; - @JsonKey(required: true, name: 'repetitions_target') - late int? repetitionsTarget; + @JsonKey(required: true, fromJson: stringToNum, name: 'repetitions_target') + late num? repetitionsTarget; @JsonKey(required: true, name: 'repetitions_unit') late int repetitionsUnitId; diff --git a/lib/models/workouts/log.g.dart b/lib/models/workouts/log.g.dart index 984f38ca..55527730 100644 --- a/lib/models/workouts/log.g.dart +++ b/lib/models/workouts/log.g.dart @@ -26,8 +26,8 @@ Log _$LogFromJson(Map json) { id: (json['id'] as num?)?.toInt(), exerciseId: (json['exercise'] as num).toInt(), routineId: (json['routine'] as num).toInt(), - repetitions: (json['repetitions'] as num).toInt(), - repetitionsTarget: (json['repetitions_target'] as num?)?.toInt(), + repetitions: stringToNum(json['repetitions'] as String?), + repetitionsTarget: stringToNum(json['repetitions_target'] as String?), repetitionsUnitId: (json['repetitions_unit'] as num).toInt(), rir: json['rir'] as String?, rirTarget: json['rir_target'] as String?, diff --git a/lib/providers/gym_state.dart b/lib/providers/gym_state.dart index 47c142d9..4535148a 100644 --- a/lib/providers/gym_state.dart +++ b/lib/providers/gym_state.dart @@ -4,7 +4,8 @@ import 'package:wger/models/exercises/exercise.dart'; const GYM_PAGE_KEY = 'gym_current_page'; -final StateNotifierProvider gymStateProvider = StateNotifierProvider((ref) { +final StateNotifierProvider gymStateProvider = + StateNotifierProvider((ref) { return GymStateNotifier(); }); @@ -41,7 +42,7 @@ class GymStateNotifier extends StateNotifier { Future _loadSavedState() async { final SharedPreferences prefs = await _prefs; - final int savedPage = prefs.getInt(GYM_PAGE_KEY) ?? 0; + final int savedPage = prefs.getInt(GYM_PAGE_KEY) ?? 0; state = state.copyWith(currentPage: savedPage); } @@ -54,7 +55,8 @@ class GymStateNotifier extends StateNotifier { void toggleExercisePages() { state = state.copyWith(showExercisePages: !state.showExercisePages); } + void setExercisePages(Map exercisePages) { state = state.copyWith(exercisePages: exercisePages); } -} \ No newline at end of file +} diff --git a/lib/widgets/routines/gym_mode.dart b/lib/widgets/routines/gym_mode.dart index 3898f52c..74f90fe1 100644 --- a/lib/widgets/routines/gym_mode.dart +++ b/lib/widgets/routines/gym_mode.dart @@ -22,7 +22,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_html/flutter_html.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:intl/intl.dart'; -import 'package:provider/provider.dart'as provider; +import 'package:provider/provider.dart' as provider; import 'package:wger/exceptions/http_exception.dart'; import 'package:wger/helpers/consts.dart'; import 'package:wger/helpers/gym_mode.dart'; @@ -61,7 +61,6 @@ class GymMode extends ConsumerStatefulWidget { ConsumerState createState() => _GymModeState(); } - class _GymModeState extends ConsumerState { var _totalElements = 1; @@ -73,7 +72,6 @@ class _GymModeState extends ConsumerState { void dispose() { _controller.dispose(); super.dispose(); - } @override @@ -83,6 +81,7 @@ class _GymModeState extends ConsumerState { _controller = PageController(initialPage: initialPage); Future.microtask(() => _calculatePages()); } + void _calculatePages() { for (final slot in widget._dayDataGym.slots) { _totalElements += slot.setConfigs.length; @@ -148,6 +147,7 @@ class _GymModeState extends ConsumerState { return out; } + @override Widget build(BuildContext context) { return PageView( diff --git a/pubspec.lock b/pubspec.lock index 5a98729c..26471dbf 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -501,6 +501,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.23" + flutter_riverpod: + dependency: "direct main" + description: + name: flutter_riverpod + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + url: "https://pub.dev" + source: hosted + version: "2.6.1" flutter_staggered_grid_view: dependency: "direct main" description: @@ -1121,6 +1129,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.15" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + url: "https://pub.dev" + source: hosted + version: "2.6.1" shared_preferences: dependency: "direct main" description: @@ -1262,6 +1278,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.12.0" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" stream_channel: dependency: transitive description: @@ -1568,4 +1592,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.6.0 <4.0.0" - flutter: ">=3.24.0" + flutter: ">=3.27.0"