Начальный коммит
This commit is contained in:
117
lib/models/task_adapter.dart
Normal file
117
lib/models/task_adapter.dart
Normal 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']);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user