improved ux
This commit is contained in:
@@ -96,56 +96,69 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
minLines: 3,
|
||||
maxLines: 10,
|
||||
),
|
||||
TextFormField(
|
||||
focusNode: dueDateFocusNode,
|
||||
controller: dueDateController,
|
||||
onChanged: maybeEnableDueTime,
|
||||
onFieldSubmitted: (_) {
|
||||
isDueTimeEnabled
|
||||
? dueDateFocusNode.nextFocus()
|
||||
: categoryFocusNode.requestFocus();
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
label: Text('Due Date'),
|
||||
suffix: IconButton(
|
||||
onPressed: () async {
|
||||
final result = await onOpenCalendarPickerPressed();
|
||||
if (result != null) {
|
||||
final dateString = getIsoDateString(result);
|
||||
dueDateController.text = dateString;
|
||||
maybeEnableDueTime(dateString);
|
||||
formKey.currentState?.validate();
|
||||
dueTimeFocusNode.requestFocus();
|
||||
}
|
||||
},
|
||||
icon: Icon(Icons.calendar_month),
|
||||
Flex(
|
||||
direction: Axis.horizontal,
|
||||
|
||||
children: [
|
||||
Flexible(
|
||||
flex: 3,
|
||||
child: TextFormField(
|
||||
focusNode: dueDateFocusNode,
|
||||
controller: dueDateController,
|
||||
onChanged: maybeEnableDueTime,
|
||||
onFieldSubmitted: (_) {
|
||||
isDueTimeEnabled
|
||||
? dueDateFocusNode.nextFocus()
|
||||
: categoryFocusNode.requestFocus();
|
||||
},
|
||||
decoration: InputDecoration(
|
||||
label: Text('Due Date'),
|
||||
suffixIcon: IconButton(
|
||||
onPressed: () async {
|
||||
final result = await onOpenCalendarPickerPressed();
|
||||
if (result != null) {
|
||||
final dateString = getIsoDateString(result);
|
||||
dueDateController.text = dateString;
|
||||
maybeEnableDueTime(dateString);
|
||||
formKey.currentState?.validate();
|
||||
dueTimeFocusNode.requestFocus();
|
||||
}
|
||||
},
|
||||
icon: Icon(Icons.calendar_month),
|
||||
),
|
||||
),
|
||||
validator: dateTimeValidator,
|
||||
keyboardType: TextInputType.datetime,
|
||||
textInputAction: TextInputAction.next,
|
||||
),
|
||||
),
|
||||
),
|
||||
validator: dateTimeValidator,
|
||||
keyboardType: TextInputType.datetime,
|
||||
textInputAction: TextInputAction.next,
|
||||
),
|
||||
TextFormField(
|
||||
focusNode: dueTimeFocusNode,
|
||||
onFieldSubmitted: (_) => dueTimeFocusNode.nextFocus(),
|
||||
controller: dueTimeController,
|
||||
enabled: isDueTimeEnabled,
|
||||
decoration: InputDecoration(
|
||||
label: Text('Due Time'),
|
||||
suffix: IconButton(
|
||||
onPressed: () async {
|
||||
final result = await onOpenTimePickerPressed();
|
||||
if (result != null && context.mounted) {
|
||||
dueTimeController.text = result.format(context);
|
||||
categoryFocusNode.requestFocus();
|
||||
}
|
||||
},
|
||||
icon: Icon(Icons.schedule),
|
||||
Padding(padding: EdgeInsetsGeometry.only(left: 10)),
|
||||
Flexible(
|
||||
flex: 2,
|
||||
child: TextFormField(
|
||||
focusNode: dueTimeFocusNode,
|
||||
onFieldSubmitted: (_) => dueTimeFocusNode.nextFocus(),
|
||||
controller: dueTimeController,
|
||||
enabled: isDueTimeEnabled,
|
||||
decoration: InputDecoration(
|
||||
label: Text('Due Time'),
|
||||
suffixIcon: IconButton(
|
||||
onPressed: () async {
|
||||
final result = await onOpenTimePickerPressed();
|
||||
if (result != null && context.mounted) {
|
||||
dueTimeController.text = result.format(context);
|
||||
categoryFocusNode.requestFocus();
|
||||
}
|
||||
},
|
||||
icon: Icon(Icons.schedule),
|
||||
),
|
||||
),
|
||||
validator: timeValidator,
|
||||
keyboardType: TextInputType.text,
|
||||
textInputAction: TextInputAction.next,
|
||||
),
|
||||
),
|
||||
),
|
||||
validator: timeValidator,
|
||||
keyboardType: TextInputType.text,
|
||||
textInputAction: TextInputAction.next,
|
||||
],
|
||||
),
|
||||
TextFormField(
|
||||
focusNode: categoryFocusNode,
|
||||
@@ -198,7 +211,9 @@ class _TaskEditPageState extends State<TaskEditPage> {
|
||||
title: titleController.text,
|
||||
description: descriptionController.text,
|
||||
start: null,
|
||||
due: null,
|
||||
due: DateTime.tryParse(
|
||||
'${dueDateController.text} ${dueTimeController.text}'.trim(),
|
||||
),
|
||||
isCompleted: false,
|
||||
category: categoryController.text,
|
||||
subtasks: [],
|
||||
|
||||
Reference in New Issue
Block a user