mirror of
https://github.com/go-vikunja/app
synced 2024-06-05 03:59:48 +00:00
added option to enter custom due date in AddDialog
This commit is contained in:
parent
3cdedeac07
commit
6ced47ddea
|
@ -1,8 +1,9 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:vikunja_app/components/datetimePicker.dart';
|
||||
import 'dart:developer';
|
||||
import '../models/task.dart';
|
||||
|
||||
enum NewTaskDue {day,week, month}
|
||||
enum NewTaskDue {day,week, month, custom}
|
||||
Map<NewTaskDue, Duration> newTaskDueToDuration = {
|
||||
NewTaskDue.day: Duration(days: 1),
|
||||
NewTaskDue.week: Duration(days: 7),
|
||||
|
@ -22,10 +23,13 @@ class AddDialog extends StatefulWidget {
|
|||
|
||||
class AddDialogState extends State<AddDialog> {
|
||||
NewTaskDue newTaskDue = NewTaskDue.day;
|
||||
DateTime customDueDate;
|
||||
var textController = TextEditingController();
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if(newTaskDue != NewTaskDue.custom)
|
||||
customDueDate = DateTime.now().add(newTaskDueToDuration[newTaskDue]);
|
||||
return new AlertDialog(
|
||||
contentPadding: const EdgeInsets.all(16.0),
|
||||
content: new Column(
|
||||
|
@ -43,6 +47,11 @@ class AddDialogState extends State<AddDialog> {
|
|||
widget.onAddTask != null ? taskDueList("1 Day", NewTaskDue.day) : new Container(),
|
||||
widget.onAddTask != null ? taskDueList("1 Week", NewTaskDue.week) : new Container(),
|
||||
widget.onAddTask != null ? taskDueList("1 Month", NewTaskDue.month) : new Container(),
|
||||
widget.onAddTask != null ? VikunjaDateTimePicker(
|
||||
label: "Enter exact time",
|
||||
onChanged: (value) {setState(() => newTaskDue = NewTaskDue.custom); customDueDate = value;},
|
||||
|
||||
) : new Container(),
|
||||
//],)
|
||||
]),
|
||||
actions: <Widget>[
|
||||
|
@ -55,8 +64,13 @@ class AddDialogState extends State<AddDialog> {
|
|||
onPressed: () {
|
||||
if (widget.onAdd != null && textController.text.isNotEmpty)
|
||||
widget.onAdd(textController.text);
|
||||
if(widget.onAddTask != null && textController.text.isNotEmpty)
|
||||
widget.onAddTask(Task(id: null, title: textController.text, done: false, createdBy: null, dueDate: DateTime.now().add(newTaskDueToDuration[newTaskDue])));
|
||||
if(widget.onAddTask != null && textController.text.isNotEmpty) {
|
||||
widget.onAddTask(Task(id: null,
|
||||
title: textController.text,
|
||||
done: false,
|
||||
createdBy: null,
|
||||
dueDate: customDueDate));
|
||||
}
|
||||
Navigator.pop(context);
|
||||
},
|
||||
)
|
||||
|
@ -65,9 +79,10 @@ class AddDialogState extends State<AddDialog> {
|
|||
}
|
||||
|
||||
Widget taskDueList(String name, NewTaskDue thisNewTaskDue) {
|
||||
// TODO: I know you can do better
|
||||
return Row(children: [
|
||||
Checkbox(value: newTaskDue == thisNewTaskDue, onChanged: (value) { setState(() => newTaskDue = value ? thisNewTaskDue: newTaskDue);}, shape: CircleBorder(),),
|
||||
Checkbox(value: newTaskDue == thisNewTaskDue, onChanged: (value) {
|
||||
newTaskDue = thisNewTaskDue;
|
||||
setState(() => customDueDate = DateTime.now().add(newTaskDueToDuration[thisNewTaskDue]));}, shape: CircleBorder(),),
|
||||
Text(name),
|
||||
]);
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ class VikunjaDateTimePicker extends StatelessWidget {
|
|||
return DateTimeField(
|
||||
//dateOnly: false,
|
||||
//editable: false, // Otherwise editing the date is not possible, this setting affects the underlying text field.
|
||||
initialValue: initialValue.year <= 1
|
||||
initialValue: initialValue == null || initialValue.year <= 1
|
||||
? null
|
||||
: initialValue.toLocal(),
|
||||
format: vDateFormatLong,
|
||||
|
|
30
pubspec.lock
30
pubspec.lock
|
@ -623,6 +623,34 @@ packages:
|
|||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.0.0"
|
||||
webview_flutter:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: webview_flutter
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
webview_flutter_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_android
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.8.5"
|
||||
webview_flutter_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_platform_interface
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "1.8.1"
|
||||
webview_flutter_wkwebview:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webview_flutter_wkwebview
|
||||
url: "https://pub.dartlang.org"
|
||||
source: hosted
|
||||
version: "2.7.2"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
|
@ -646,4 +674,4 @@ packages:
|
|||
version: "3.1.0"
|
||||
sdks:
|
||||
dart: ">=2.17.0-0 <3.0.0"
|
||||
flutter: ">=2.2.0"
|
||||
flutter: ">=2.5.0"
|
||||
|
|
Loading…
Reference in New Issue
Block a user