From a8b6c9f8a36649344af7295e366e67957235aead Mon Sep 17 00:00:00 2001 From: Brandon Presley Date: Tue, 11 Apr 2023 11:47:03 +1200 Subject: [PATCH] Auto focus and select text for edit_set --- lib/edit_set.dart | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/edit_set.dart b/lib/edit_set.dart index 4af2925..8752ad9 100644 --- a/lib/edit_set.dart +++ b/lib/edit_set.dart @@ -18,6 +18,8 @@ class _EditGymSetPageState extends State { final TextEditingController _repsController = TextEditingController(); final TextEditingController _weightController = TextEditingController(); late GymSetsCompanion gymSet; + final nameNode = FocusNode(); + final repsNode = FocusNode(); @override void initState() { @@ -26,6 +28,17 @@ class _EditGymSetPageState extends State { _nameController.text = gymSet.name.value; _repsController.text = gymSet.reps.value.toString(); _weightController.text = gymSet.weight.value.toString(); + if (gymSet.id.present) + repsNode.requestFocus(); + else + nameNode.requestFocus(); + } + + @override + dispose() { + nameNode.dispose(); + repsNode.dispose(); + super.dispose(); } @override @@ -49,7 +62,12 @@ class _EditGymSetPageState extends State { children: [ TextFormField( controller: _nameController, + focusNode: nameNode, decoration: const InputDecoration(labelText: 'Name'), + onTap: () { + _nameController.selection = TextSelection( + baseOffset: 0, extentOffset: _nameController.text.length); + }, onChanged: (value) { setState(() { gymSet = gymSet.copyWith(name: Value(value)); @@ -58,6 +76,11 @@ class _EditGymSetPageState extends State { ), TextFormField( controller: _repsController, + focusNode: repsNode, + onTap: () { + _repsController.selection = TextSelection( + baseOffset: 0, extentOffset: _repsController.text.length); + }, decoration: const InputDecoration(labelText: 'Reps'), keyboardType: TextInputType.number, onChanged: (value) { @@ -71,6 +94,10 @@ class _EditGymSetPageState extends State { controller: _weightController, decoration: const InputDecoration(labelText: 'Weight (kg)'), keyboardType: TextInputType.number, + onTap: () { + _weightController.selection = TextSelection( + baseOffset: 0, extentOffset: _weightController.text.length); + }, onChanged: (value) { setState(() { gymSet =