1
0
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:
benimautner 2022-05-05 21:15:45 +02:00
parent 3cdedeac07
commit 6ced47ddea
3 changed files with 51 additions and 8 deletions

View File

@ -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),
]);
}

View File

@ -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,

View File

@ -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"