2024-10-22 20:42:08 +02:00
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
import '../models/todo.dart';
|
|
|
|
|
|
|
|
class ToDoProvider with ChangeNotifier {
|
|
|
|
List<ToDo> _todos = [];
|
|
|
|
|
|
|
|
List<ToDo> get todos => _todos;
|
|
|
|
|
|
|
|
void addTask(ToDo todo) {
|
|
|
|
_todos.add(todo);
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
void removeTask(int index) {
|
|
|
|
_todos.removeAt(index);
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
|
|
|
void toggleCompletion(int index) {
|
|
|
|
_todos[index].isCompleted = !_todos[index].isCompleted;
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2024-10-22 20:46:33 +02:00
|
|
|
// sorting logic for deadline
|
2024-10-22 20:42:08 +02:00
|
|
|
void sortByDeadline() {
|
|
|
|
_todos.sort((a, b) {
|
|
|
|
if (a.deadline == null) return 1; // Tasks without deadline should come last
|
|
|
|
if (b.deadline == null) return -1;
|
|
|
|
return a.deadline!.compareTo(b.deadline!);
|
|
|
|
});
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2024-10-22 20:46:33 +02:00
|
|
|
// sorting logic for priority
|
2024-10-22 20:42:08 +02:00
|
|
|
void sortByPriority() {
|
|
|
|
Map<String, int> priorityMap = {'High': 1, 'Medium': 2, 'Low': 3};
|
|
|
|
_todos.sort((a, b) => priorityMap[a.priority]!.compareTo(priorityMap[b.priority]!));
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
|
2024-10-22 20:46:33 +02:00
|
|
|
// sorting logic for staus
|
2024-10-22 20:42:08 +02:00
|
|
|
void sortByStatus() {
|
|
|
|
_todos.sort((a, b) => a.isCompleted ? 1 : -1); // Uncompleted first
|
|
|
|
notifyListeners();
|
|
|
|
}
|
|
|
|
}
|