feat:增加待办提醒功能

This commit is contained in:
2026-04-29 19:21:57 +08:00
parent 3804164cfd
commit 0e6fe4ad4b
16 changed files with 297 additions and 64 deletions

View File

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