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