import 'tag.dart'; class Todo { final int? id; String title; String description; bool isCompleted; DateTime createdAt; DateTime? completedAt; List tags; Todo({ this.id, required this.title, required this.description, this.isCompleted = false, required this.createdAt, this.completedAt, this.tags = const [], }); Map toMap() { return { 'id': id, 'title': title, 'description': description, 'isCompleted': isCompleted ? 1 : 0, 'createdAt': createdAt.toIso8601String(), 'completedAt': completedAt?.toIso8601String(), }; } static Todo fromMap(Map map) { return Todo( id: map['id'], title: map['title'], description: map['description'], isCompleted: map['isCompleted'] == 1, createdAt: DateTime.parse(map['createdAt']), completedAt: map['completedAt'] != null ? DateTime.parse(map['completedAt']) : null, tags: [], ); } Todo copyWith({ int? id, String? title, String? description, bool? isCompleted, DateTime? createdAt, DateTime? completedAt, List? tags, }) { return Todo( id: id ?? this.id, title: title ?? this.title, description: description ?? this.description, isCompleted: isCompleted ?? this.isCompleted, createdAt: createdAt ?? this.createdAt, completedAt: completedAt ?? this.completedAt, tags: tags ?? this.tags, ); } }