diff --git a/lib/start_plan.dart b/lib/start_plan.dart index 9a961be..41458e0 100644 --- a/lib/start_plan.dart +++ b/lib/start_plan.dart @@ -2,7 +2,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/material.dart' as material; import 'package:flutter/services.dart'; import 'package:fmassive/database.dart'; -import 'package:fmassive/edit_plan.dart'; import 'package:fmassive/main.dart'; import 'package:moor_flutter/moor_flutter.dart'; @@ -30,11 +29,15 @@ class _StartPlanState extends State { ..addColumns([db.gymSets.name, db.gymSets.sets]) ..where(db.gymSets.name.isIn(exercises)) ..groupBy([db.gymSets.name, db.gymSets.sets])) - .map((row) => - MapEntry(row.read(db.gymSets.name), row.read(db.gymSets.sets)),) + .map( + (row) => + MapEntry(row.read(db.gymSets.name), row.read(db.gymSets.sets)), + ) .get(); final map = Map.fromIterables( - query.map((entry) => entry.key), query.map((entry) => entry.value),); + query.map((entry) => entry.key), + query.map((entry) => entry.value), + ); setState(() { totals = []; for (var exercise in exercises) { @@ -54,7 +57,9 @@ class _StartPlanState extends State { .map((row) => MapEntry(row.read(db.gymSets.name), row.read(countExp))) .get(); final map = Map.fromIterables( - query.map((entry) => entry.key), query.map((entry) => entry.value),); + query.map((entry) => entry.key), + query.map((entry) => entry.value), + ); setState(() { counts = []; for (var exercise in exercises) { @@ -76,7 +81,9 @@ class _StartPlanState extends State { final firstSet = sets.first; repsController.text = firstSet.reps.toString(); repsController.selection = TextSelection( - baseOffset: 0, extentOffset: firstSet.reps.toString().length,); + baseOffset: 0, + extentOffset: firstSet.reps.toString().length, + ); weightController.text = firstSet.weight.toString(); } @@ -99,93 +106,86 @@ class _StartPlanState extends State { @override Widget build(BuildContext context) { - List actions = []; - if (widget.plan.id.present) - actions.add(IconButton( - onPressed: () async { - await Navigator.push( - context, - MaterialPageRoute( - builder: (context) => EditPlanPage(plan: widget.plan), - ), - ); - }, - icon: const Icon(Icons.edit),),); - if (totals.isEmpty || counts.isEmpty) return Container(); return SafeArea( - child: Scaffold( - appBar: AppBar(title: const Text('Start plan'), actions: actions), - body: Padding( - padding: const EdgeInsets.all(16.0), - child: material.Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: ListView.builder( - itemBuilder: ((context, index) { - return ListTile( - title: Text(exercises[index]), - subtitle: Text("${counts[index]}/${totals[index]}"), - onTap: () { - setState(() { - selectedExercise = index; - focus(index); - }); - }, - leading: Radio( - value: index, - groupValue: selectedExercise, - onChanged: (value) { - print("onChanged $value"); - if (value == null) return; + child: Scaffold( + appBar: AppBar(title: const Text('Start plan')), + body: Padding( + padding: const EdgeInsets.all(16.0), + child: material.Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: ListView.builder( + itemBuilder: ((context, index) { + return ListTile( + title: Text(exercises[index]), + subtitle: Text("${counts[index]}/${totals[index]}"), + onTap: () { setState(() { - selectedExercise = value; + selectedExercise = index; focus(index); }); }, - ), - ); - }), - itemCount: exercises.length, + leading: Radio( + value: index, + groupValue: selectedExercise, + onChanged: (value) { + print("onChanged $value"); + if (value == null) return; + setState(() { + selectedExercise = value; + focus(index); + }); + }, + ), + ); + }), + itemCount: exercises.length, + ), ), - ), - TextFormField( - decoration: const InputDecoration(labelText: 'Reps'), - controller: repsController, - focusNode: repsNode, - onTap: () { - repsController.selection = TextSelection( - baseOffset: 0, extentOffset: repsController.text.length,); - }, - ), - TextFormField( - decoration: const InputDecoration(labelText: 'Weight'), - controller: weightController, - focusNode: weightNode, - onTap: () { - weightController.selection = TextSelection( - baseOffset: 0, extentOffset: weightController.text.length,); - }, - ), - ], + TextFormField( + decoration: const InputDecoration(labelText: 'Reps'), + controller: repsController, + focusNode: repsNode, + onTap: () { + repsController.selection = TextSelection( + baseOffset: 0, + extentOffset: repsController.text.length, + ); + }, + ), + TextFormField( + decoration: const InputDecoration(labelText: 'Weight'), + controller: weightController, + focusNode: weightNode, + onTap: () { + weightController.selection = TextSelection( + baseOffset: 0, + extentOffset: weightController.text.length, + ); + }, + ), + ], + ), ), - ), - floatingActionButton: FloatingActionButton( - onPressed: () async { - final gymSet = GymSetsCompanion( + floatingActionButton: FloatingActionButton( + onPressed: () async { + final gymSet = GymSetsCompanion( created: Value(DateTime.now().toIso8601String()), name: Value(exercises[selectedExercise]), reps: Value(int.tryParse(repsController.text) ?? 0), - weight: Value(double.tryParse(weightController.text) ?? 0),); - await db.into(db.gymSets).insert(gymSet); - const platform = MethodChannel('com.massive/android'); - platform.invokeMethod('timer', [180000]); - await getCounts(); - }, - child: const Icon(Icons.check), + weight: Value(double.tryParse(weightController.text) ?? 0), + ); + await db.into(db.gymSets).insert(gymSet); + const platform = MethodChannel('com.massive/android'); + platform.invokeMethod('timer', [180000]); + await getCounts(); + }, + child: const Icon(Icons.check), + ), ), - ),); + ); } }