feat: implement autoregulation for kettlebell training

This commit is contained in:
Patryk Hegenberg 2025-06-22 17:07:56 +02:00
parent a3e36b1975
commit 4fac48e81e
9 changed files with 417 additions and 117 deletions

View file

@ -18,9 +18,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
late TextEditingController _trainingTimeController;
late TextEditingController _weightLeftController;
late TextEditingController _weightRightController;
late TextEditingController _repsController;
late TextEditingController _goalSetsController;
late TextEditingController _notesController;
@override
void initState() {
@ -35,13 +33,9 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
_weightRightController = TextEditingController(
text: settings.weightRight.toString(),
);
_repsController = TextEditingController(
text: settings.repsPerSet.toString(),
);
_goalSetsController = TextEditingController(
text: settings.goalSets.toString(),
);
_notesController = TextEditingController(text: settings.notes);
}
@override
@ -49,9 +43,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
_trainingTimeController.dispose();
_weightLeftController.dispose();
_weightRightController.dispose();
_repsController.dispose();
_goalSetsController.dispose();
_notesController.dispose();
super.dispose();
}
@ -61,9 +53,7 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
trainingTimeMinutes: int.parse(_trainingTimeController.text),
weightLeft: double.parse(_weightLeftController.text),
weightRight: double.parse(_weightRightController.text),
repsPerSet: int.parse(_repsController.text),
goalSets: int.parse(_goalSetsController.text),
notes: _notesController.text,
);
ref.read(settingsProvider.notifier).updateSettings(newSettings);
ScaffoldMessenger.of(context).showSnackBar(
@ -123,12 +113,6 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
keyboardType: TextInputType.number,
),
const SizedBox(height: 16),
CustomTextField(
controller: _repsController,
labelText: "Reps pro Satz",
icon: Icons.repeat,
keyboardType: TextInputType.number,
),
const SizedBox(height: 16),
CustomTextField(
controller: _goalSetsController,
@ -139,25 +123,6 @@ class _SettingsScreenState extends ConsumerState<SettingsScreen> {
],
),
),
const SizedBox(height: 20),
CustomCard(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"Zusätzliche Notizen",
style: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 20),
CustomTextField(
controller: _notesController,
labelText: "Notizen für nächstes Training",
icon: Icons.note,
maxLines: 4,
),
],
),
),
const SizedBox(height: 24),
ElevatedButton.icon(
onPressed: _saveSettings,