feat:增加日程模块

This commit is contained in:
2025-11-13 15:53:29 +08:00
parent 63719406d9
commit 54bed08b7b
15 changed files with 830 additions and 20 deletions

54
lib/models/calendar.dart Normal file
View File

@@ -0,0 +1,54 @@
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
// flutter packages pub run build_runner build
part 'calendar.g.dart';
@HiveType(typeId: 3)
class Calendar extends HiveObject {
@HiveField(0)
late int id;
@HiveField(1)
late String title;
@HiveField(2)
late DateTime? startTime;
@HiveField(3)
late DateTime? endTime;
@HiveField(4)
late DateTime? scheduledTime;
@HiveField(5)
late DateTime createTime;
@HiveField(6)
late DateTime updateTime;
Calendar({
int? id,
required this.title,
required this.startTime,
required this.endTime,
this.scheduledTime,
DateTime? createTime,
DateTime? updateTime,
}) {
// 简单时间戳ID
this.id = id ?? DateTime.now().millisecondsSinceEpoch ~/ 1000;
this.createTime = createTime ?? DateTime.now();
this.updateTime = updateTime ?? DateTime.now();
}
static Calendar getEmpty() {
return Calendar(
id: DateTime.now().millisecondsSinceEpoch ~/ 1000,
title: '',
startTime: null,
endTime: null,
scheduledTime: null,
);
}
}

View File

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