Начальный коммит

This commit is contained in:
2026-01-30 21:54:00 +07:00
parent 51de113db5
commit 3881248187
81 changed files with 5424 additions and 0 deletions

View File

@@ -0,0 +1,5 @@
class Document {
int? id;
Document({this.id});
}

View File

@@ -0,0 +1,117 @@
// task_adapter.dart
import 'package:hive/hive.dart';
part 'task_adapter.g.dart';
@HiveType(typeId: 0)
class Task extends HiveObject {
@HiveField(0)
final String id;
@HiveField(1)
final String title;
@HiveField(3)
String description;
@HiveField(4)
final String author;
@HiveField(5)
String executor;
@HiveField(6)
final DateTime startTime;
@HiveField(7)
DateTime? endTime;
@HiveField(8)
bool isCompleted;
@HiveField(9)
bool isSynced;
@HiveField(10) // Новое поле: список подзадач
final List<Subtask> items;
@HiveField(11)
bool isDeletedLocally;
@HiveField(12)
bool isNew;
Task({
required this.id,
required this.title,
required this.startTime,
required this.author,
required this.executor,
this.endTime,
this.isCompleted = false,
this.description = "",
this.isSynced = false,
this.isDeletedLocally = false,
this.items = const [],
this.isNew = true,
});
Map<String, dynamic> toMap() {
return {
'id': id,
'title': title,
'startTime': startTime.toIso8601String(),
'endTime': endTime?.toIso8601String() ?? '',
'author': author,
'executor': executor,
'isCompleted': isCompleted,
'description': description,
'items': items.map((item) => item.toMap()).toList(),
};
}
factory Task.fromMap(Map<String, dynamic> map) {
return Task(
id: map['_id'],
title: map['title'],
description: map['description'],
author: map['author'],
executor: map['executor'],
startTime: DateTime.parse(map['startTime']),
endTime: map['endTime'] != null ? DateTime.parse(map['endTime']) : null,
isCompleted: map['isCompleted'],
isSynced: true,
isDeletedLocally: false,
isNew: false,
items:
(map['items'] as List?)
?.map((item) => Subtask.fromMap(item))
.toList() ??
[],
);
}
get subtasks => items;
}
@HiveType(typeId: 1)
class Subtask extends HiveObject {
@HiveField(0)
final String id;
@HiveField(1)
String text;
@HiveField(2)
bool isDone;
Subtask({required this.id, required this.text, this.isDone = false});
Map<String, dynamic> toMap() {
return {'id': id, 'text': text, 'isDone': isDone};
}
factory Subtask.fromMap(Map<String, dynamic> map) {
return Subtask(id: map['id'], text: map['text'], isDone: map['isDone']);
}
}

View File

@@ -0,0 +1,114 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'task_adapter.dart';
// **************************************************************************
// TypeAdapterGenerator
// **************************************************************************
class TaskAdapter extends TypeAdapter<Task> {
@override
final int typeId = 0;
@override
Task read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Task(
id: fields[0] as String,
title: fields[1] as String,
startTime: fields[6] as DateTime,
author: fields[4] as String,
executor: fields[5] as String,
endTime: fields[7] as DateTime?,
isCompleted: fields[8] as bool,
description: fields[3] as String,
isSynced: fields[9] as bool,
isDeletedLocally: fields[11] as bool,
items: (fields[10] as List).cast<Subtask>(),
isNew: fields[12] as bool,
);
}
@override
void write(BinaryWriter writer, Task obj) {
writer
..writeByte(12)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.title)
..writeByte(3)
..write(obj.description)
..writeByte(4)
..write(obj.author)
..writeByte(5)
..write(obj.executor)
..writeByte(6)
..write(obj.startTime)
..writeByte(7)
..write(obj.endTime)
..writeByte(8)
..write(obj.isCompleted)
..writeByte(9)
..write(obj.isSynced)
..writeByte(10)
..write(obj.items)
..writeByte(11)
..write(obj.isDeletedLocally)
..writeByte(12)
..write(obj.isNew);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is TaskAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}
class SubtaskAdapter extends TypeAdapter<Subtask> {
@override
final int typeId = 1;
@override
Subtask read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return Subtask(
id: fields[0] as String,
text: fields[1] as String,
isDone: fields[2] as bool,
);
}
@override
void write(BinaryWriter writer, Subtask obj) {
writer
..writeByte(3)
..writeByte(0)
..write(obj.id)
..writeByte(1)
..write(obj.text)
..writeByte(2)
..write(obj.isDone);
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is SubtaskAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}