import 'package:flutter/material.dart'; import 'task_model.dart'; class TaskProvider with ChangeNotifier { List _tasks = []; List get tasks => _tasks; // Добавление задачи void addTask({ required String title, String? description, String? category, DateTime? deadline, TaskPriority priority = TaskPriority.medium, }) { final task = Task( title: title, description: description, category: category, deadline: deadline, priority: priority, ); _tasks.add(task); notifyListeners(); } // Удаление задачи void removeTask(Task task) { _tasks.remove(task); notifyListeners(); } // Изменение состояния задачи void toggleTaskCompletion(Task task) { task.isCompleted = !task.isCompleted; notifyListeners(); } // Сортировка задач по приоритету и дедлайну void sortTasks() { _tasks.sort((a, b) { // Сравнение по приоритету if (a.priority == b.priority) { // Если оба дедлайна не null, сравниваем их if (a.deadline != null && b.deadline != null) { return a.deadline!.compareTo(b.deadline!); } // Если у одной задачи нет дедлайна, она считается "позднее" if (a.deadline == null) return 1; // Задачи без дедлайна позже if (b.deadline == null) return -1; // Задачи с дедлайном раньше return 0; } // Сравнение по приоритету return a.priority.index.compareTo(b.priority.index); }); notifyListeners(); } // Метод для завершения всех задач void completeAllTasks() { for (var task in _tasks) { task.isCompleted = true; } notifyListeners(); } // Асинхронная загрузка задач Future loadTasks() async { if (_tasks.isEmpty) { _tasks = [ Task( title: "Task 1", category: "Work", deadline: DateTime.now().add(Duration(days: 1)), priority: TaskPriority.high), Task( title: "Task 2", category: "Home", deadline: DateTime.now().add(Duration(days: 2)), priority: TaskPriority.medium), Task( title: "Task 3", description: "Optional description", priority: TaskPriority.low), Task( title: "Task 4", category: "Personal", priority: TaskPriority.high), ]; } notifyListeners(); } }