feat:合并待办和提醒功能

This commit is contained in:
2025-11-09 11:16:24 +08:00
parent d5ff4c9b02
commit 7c3d35eb18
16 changed files with 259 additions and 730 deletions

View File

@@ -1,58 +0,0 @@
import 'package:hive/hive.dart';
// flutter packages pub run build_runner build
part 'reminder.g.dart';
@HiveType(typeId: 1)
class Reminder extends HiveObject {
@HiveField(0)
late int id;
@HiveField(1)
late String title;
@HiveField(2)
late String content;
@HiveField(3)
late DateTime scheduledTime;
@HiveField(4)
late DateTime createTime;
@HiveField(5)
late DateTime updateTime;
Reminder({
int? id,
required this.title,
required this.content,
required this.scheduledTime,
DateTime? createTime,
DateTime? updateTime,
}) {
// 简单时间戳ID
this.id = id ?? DateTime.now().millisecondsSinceEpoch ~/ 1000;
this.createTime = createTime ?? DateTime.now();
this.updateTime = updateTime ?? DateTime.now();
}
Reminder copyWith({String? title, String? content, DateTime? scheduledTime}) {
return Reminder(
id: id,
title: title ?? this.title,
content: content ?? this.content,
scheduledTime: scheduledTime ?? this.scheduledTime,
createTime: createTime,
updateTime: DateTime.now(),
);
}
static Reminder getEmpty() {
return Reminder(
id: DateTime.now().millisecondsSinceEpoch ~/ 1000,
title: '日常提醒',
content: '',
scheduledTime: DateTime.now().add(Duration(minutes: 5)),
);
}
}

View File

@@ -1,56 +0,0 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'reminder.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class ReminderAdapter extends TypeAdapter<Reminder> {
@override
final int typeId = 1;
@override
Reminder read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Reminder(
id: fields[0] as int?,
title: fields[1] as String,
content: fields[2] as String,
scheduledTime: fields[3] as DateTime,
createTime: fields[4] as DateTime?,
updateTime: fields[5] as DateTime?,
);
}
@override
void write(BinaryWriter writer, Reminder obj) {
writer
..writeByte(6)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.title)
..writeByte(2)
..write(obj.content)
..writeByte(3)
..write(obj.scheduledTime)
..writeByte(4)
..write(obj.createTime)
..writeByte(5)
..write(obj.updateTime);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is ReminderAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}

View File

@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
// flutter packages pub run build_runner build
part 'todo.g.dart';
@HiveType(typeId: 0)
@@ -21,12 +22,15 @@ class Todo extends HiveObject {
late DateTime? dueDate;
@HiveField(5)
late int priorityIndex;
late DateTime? scheduledTime;
@HiveField(6)
late DateTime createTime;
late int priorityIndex;
@HiveField(7)
late DateTime createTime;
@HiveField(8)
late DateTime updateTime;
TodoPriority get priority => TodoPriority.values[priorityIndex];
@@ -39,6 +43,7 @@ class Todo extends HiveObject {
this.content = '',
this.isCompleted = false,
this.dueDate,
this.scheduledTime,
TodoPriority priority = TodoPriority.medium,
DateTime? createTime,
DateTime? updateTime,
@@ -55,6 +60,7 @@ class Todo extends HiveObject {
String? content,
bool? isCompleted,
DateTime? dueDate,
DateTime? scheduledTime,
TodoPriority? priority,
}) {
return Todo(
@@ -63,6 +69,7 @@ class Todo extends HiveObject {
content: content ?? this.content,
isCompleted: isCompleted ?? this.isCompleted,
dueDate: dueDate ?? this.dueDate,
scheduledTime: scheduledTime ?? this.scheduledTime,
priority: priority ?? this.priority,
createTime: createTime,
updateTime: DateTime.now(),
@@ -72,10 +79,11 @@ class Todo extends HiveObject {
static Todo getEmpty() {
return Todo(
id: DateTime.now().millisecondsSinceEpoch ~/ 1000,
title: '日常待办',
title: '',
content: '',
isCompleted: false,
dueDate: null,
scheduledTime: null,
priority: TodoPriority.medium,
);
}

View File

@@ -22,15 +22,16 @@ class TodoAdapter extends TypeAdapter<Todo> {
content: fields[2] as String,
isCompleted: fields[3] as bool,
dueDate: fields[4] as DateTime?,
createTime: fields[6] as DateTime?,
updateTime: fields[7] as DateTime?,
)..priorityIndex = fields[5] as int;
scheduledTime: fields[5] as DateTime?,
createTime: fields[7] as DateTime?,
updateTime: fields[8] as DateTime?,
)..priorityIndex = fields[6] as int;
}
@override
void write(BinaryWriter writer, Todo obj) {
writer
..writeByte(8)
..writeByte(9)
..writeByte(0)
..write(obj.id)
..writeByte(1)
@@ -42,10 +43,12 @@ class TodoAdapter extends TypeAdapter<Todo> {
..writeByte(4)
..write(obj.dueDate)
..writeByte(5)
..write(obj.priorityIndex)
..write(obj.scheduledTime)
..writeByte(6)
..write(obj.createTime)
..write(obj.priorityIndex)
..writeByte(7)
..write(obj.createTime)
..writeByte(8)
..write(obj.updateTime);
}