// 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 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 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 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 toMap() { return {'id': id, 'text': text, 'isDone': isDone}; } factory Subtask.fromMap(Map map) { return Subtask(id: map['id'], text: map['text'], isDone: map['isDone']); } }