feat:增加日程模块

This commit is contained in:
2026-04-26 14:23:32 +08:00
parent 57c6e552d4
commit 8f6e4cc23e
13 changed files with 905 additions and 518 deletions

View File

@@ -3,8 +3,8 @@ import 'dart:ui';
import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter/material.dart' show SegmentedButton, ButtonSegment;
import 'package:task_hub/models/task.dart';
import 'package:task_hub/widges/task_dialog.dart';
import 'package:task_hub/widges/task_item.dart';
import 'package:task_hub/widgets/task_dialog.dart';
import 'package:task_hub/widgets/task_item.dart';
// 任务页面
class TaskPage extends StatefulWidget {
@@ -16,8 +16,8 @@ class TaskPage extends StatefulWidget {
class _TaskPageState extends State<TaskPage> {
final List<Task> _tasks = [];
String _filter = 'all'; // all, active, completed
String _sortBy = 'created'; // created, due, priority
String _filter = 'all';
String _sortBy = 'created';
List<Task> get _filteredTasks {
List<Task> tasks =
@@ -38,7 +38,7 @@ class _TaskPageState extends State<TaskPage> {
return b.priority.index.compareTo(a.priority.index);
case 'created':
default:
return b.createdAt.compareTo(a.createdAt);
return b.createTime.compareTo(a.createTime);
}
});
@@ -77,7 +77,7 @@ class _TaskPageState extends State<TaskPage> {
);
}
void _deleteTask(String taskId) {
void _deleteTask(int taskId) {
setState(() {
_tasks.removeWhere((task) => task.id == taskId);
});
@@ -90,8 +90,8 @@ class _TaskPageState extends State<TaskPage> {
_tasks[index] = Task(
id: task.id,
title: task.title,
description: task.description,
createdAt: task.createdAt,
desc: task.desc,
createTime: task.createTime,
dueDate: task.dueDate,
isCompleted: !task.isCompleted,
priority: task.priority,
@@ -101,24 +101,6 @@ class _TaskPageState extends State<TaskPage> {
});
}
void _updateTaskPriority(String taskId, Priority priority) {
setState(() {
final index = _tasks.indexWhere((task) => task.id == taskId);
if (index != -1) {
_tasks[index] = Task(
id: _tasks[index].id,
title: _tasks[index].title,
description: _tasks[index].description,
createdAt: _tasks[index].createdAt,
dueDate: _tasks[index].dueDate,
isCompleted: _tasks[index].isCompleted,
priority: priority,
category: _tasks[index].category,
);
}
});
}
@override
Widget build(BuildContext context) {
return ScaffoldPage.withPadding(
@@ -274,9 +256,7 @@ class _TaskPageState extends State<TaskPage> {
task: task,
onToggleComplete: () => _toggleTaskComplete(task),
onEdit: () => _editTask(task),
onDelete: () => _deleteTask(task.id),
onPriorityChanged:
(priority) => _updateTaskPriority(task.id, priority),
onDelete: () => _deleteTask(task.id)
),
);
},