updated ux

This commit is contained in:
2026-06-17 12:18:02 +02:00
parent 12329d20e8
commit 32e44010fb
+17 -13
View File
@@ -25,6 +25,9 @@ class _TaskEditPageState extends State<TaskEditPage> {
final dueDateController = TextEditingController(); final dueDateController = TextEditingController();
final dueTimeController = TextEditingController(); final dueTimeController = TextEditingController();
late String pageTitle; late String pageTitle;
final dueDateFocusNode = FocusNode();
final dueTimeFocusNode = FocusNode();
final categoryFocusNode = FocusNode();
@override @override
void didChangeDependencies() { void didChangeDependencies() {
@@ -80,16 +83,15 @@ class _TaskEditPageState extends State<TaskEditPage> {
TextFormField( TextFormField(
controller: descriptionController, controller: descriptionController,
decoration: InputDecoration(label: Text('Description')), decoration: InputDecoration(label: Text('Description')),
keyboardType: TextInputType.text, keyboardType: TextInputType.multiline,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.newline,
minLines: 3,
maxLines: 10,
), ),
TextFormField( TextFormField(
focusNode: dueDateFocusNode,
controller: dueDateController, controller: dueDateController,
onChanged: (value) { onFieldSubmitted: (_) => dueDateFocusNode.nextFocus(),
if (dateTimeValidator(value) == null) {}
setState(() {});
},
decoration: InputDecoration( decoration: InputDecoration(
label: Text('Due Date'), label: Text('Due Date'),
suffix: IconButton( suffix: IconButton(
@@ -97,17 +99,19 @@ class _TaskEditPageState extends State<TaskEditPage> {
final result = await onOpenCalendarPickerPressed(); final result = await onOpenCalendarPickerPressed();
if (result != null) { if (result != null) {
dueDateController.text = getIsoDateString(result); dueDateController.text = getIsoDateString(result);
dueTimeFocusNode.requestFocus();
} }
setState(() {});
}, },
icon: Icon(Icons.calendar_month), icon: Icon(Icons.calendar_month),
), ),
), ),
validator: dateTimeValidator, validator: dateTimeValidator,
keyboardType: TextInputType.text, keyboardType: TextInputType.datetime,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
), ),
TextFormField( TextFormField(
focusNode: dueTimeFocusNode,
onFieldSubmitted: (_) => dueTimeFocusNode.nextFocus(),
controller: dueTimeController, controller: dueTimeController,
enabled: DateTime.tryParse(dueDateController.text) != null enabled: DateTime.tryParse(dueDateController.text) != null
? true ? true
@@ -117,10 +121,9 @@ class _TaskEditPageState extends State<TaskEditPage> {
suffix: IconButton( suffix: IconButton(
onPressed: () async { onPressed: () async {
final result = await onOpenTimePickerPressed(); final result = await onOpenTimePickerPressed();
if (result != null) { if (result != null && context.mounted) {
setState(() { dueTimeController.text = result.format(context);
dueTimeController.text = result.format(context); categoryFocusNode.requestFocus();
});
} }
}, },
icon: Icon(Icons.schedule), icon: Icon(Icons.schedule),
@@ -131,6 +134,7 @@ class _TaskEditPageState extends State<TaskEditPage> {
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
), ),
TextFormField( TextFormField(
focusNode: categoryFocusNode,
controller: categoryController, controller: categoryController,
decoration: InputDecoration(label: Text('Category')), decoration: InputDecoration(label: Text('Category')),
keyboardType: TextInputType.text, keyboardType: TextInputType.text,