feat:增加待办提醒功能
This commit is contained in:
@@ -2,7 +2,9 @@ import 'dart:ui';
|
||||
|
||||
import 'package:fluent_ui/fluent_ui.dart';
|
||||
import 'package:flutter/material.dart' show SegmentedButton, ButtonSegment;
|
||||
import 'package:hive/hive.dart';
|
||||
import 'package:task_hub/models/task.dart';
|
||||
import 'package:task_hub/utils/notice.dart';
|
||||
import 'package:task_hub/widgets/task_dialog.dart';
|
||||
import 'package:task_hub/widgets/task_item.dart';
|
||||
|
||||
@@ -15,10 +17,24 @@ class TaskPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
class _TaskPageState extends State<TaskPage> {
|
||||
final List<Task> _tasks = [];
|
||||
late Box<Task> _taskBox;
|
||||
List<Task> _tasks = [];
|
||||
String _filter = 'all';
|
||||
String _sortBy = 'created';
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadTasks();
|
||||
}
|
||||
|
||||
void _loadTasks() {
|
||||
_taskBox = Hive.box<Task>('taskBox');
|
||||
setState(() {
|
||||
_tasks = _taskBox.values.toList();
|
||||
});
|
||||
}
|
||||
|
||||
List<Task> get _filteredTasks {
|
||||
List<Task> tasks = _tasks.where((task) {
|
||||
if (_filter == 'active') return !task.isCompleted;
|
||||
@@ -48,10 +64,12 @@ class _TaskPageState extends State<TaskPage> {
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (context) => TaskDialog(
|
||||
onSave: (task) {
|
||||
onSave: (task) async {
|
||||
await _taskBox.put(task.id, task);
|
||||
setState(() {
|
||||
_tasks.add(task);
|
||||
_tasks = _taskBox.values.toList();
|
||||
});
|
||||
checkScheduleTime();
|
||||
},
|
||||
),
|
||||
);
|
||||
@@ -62,22 +80,26 @@ class _TaskPageState extends State<TaskPage> {
|
||||
context: context,
|
||||
builder: (context) => TaskDialog(
|
||||
task: task,
|
||||
onSave: (editedTask) {
|
||||
onSave: (editedTask) async {
|
||||
editedTask.updateTime = DateTime.now();
|
||||
await _taskBox.put(editedTask.id, editedTask);
|
||||
setState(() {
|
||||
final index = _tasks.indexWhere((t) => t.id == task.id);
|
||||
if (index != -1) {
|
||||
_tasks[index] = editedTask;
|
||||
}
|
||||
_tasks = _taskBox.values.toList();
|
||||
});
|
||||
checkScheduleTime();
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _deleteTask(int taskId) {
|
||||
void _deleteTask(int taskId) async {
|
||||
final task = _tasks.firstWhere((t) => t.id == taskId);
|
||||
await task.delete();
|
||||
|
||||
setState(() {
|
||||
_tasks.removeWhere((task) => task.id == taskId);
|
||||
_tasks = _taskBox.values.toList();
|
||||
});
|
||||
checkScheduleTime();
|
||||
}
|
||||
|
||||
void _toggleTaskComplete(Task task) {
|
||||
@@ -91,7 +113,7 @@ class _TaskPageState extends State<TaskPage> {
|
||||
createTime: task.createTime,
|
||||
dueDate: task.dueDate,
|
||||
isCompleted: !task.isCompleted,
|
||||
priority: task.priority
|
||||
priority: task.priority,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user