added controller to handle tasks globally

This commit is contained in:
2026-06-12 12:24:02 +02:00
parent 6e6b9280c0
commit 4eab7e2743
+49
View File
@@ -0,0 +1,49 @@
import 'package:flutter/material.dart' show ChangeNotifier;
import '../model/repositories/interfaces/task_repository.dart';
import '../model/task.dart';
class TaskController extends ChangeNotifier {
TaskController(TaskRepository repository) : _repository = repository {
Future.wait([
_loadTaskOrder(),
_loadTasks(),
]).whenComplete(() => notifyListeners());
}
final TaskRepository _repository;
final List<Task> _tasks = [];
final List<String> _taskOrder = [];
List<Task> get orderedTasks {
final lookup = {for (final task in _tasks) task.id: task};
return _taskOrder.map((id) => lookup[id]!).toList();
}
Future<void> reorderTask(int oldIndex, int newIndex) async {
final taskId = _taskOrder.removeAt(oldIndex);
_taskOrder.insert(newIndex, taskId);
_repository.saveTaskOrder(_taskOrder);
}
Future<void> saveTask(Task task) async {
await _repository.saveTask(task);
await _loadTasks();
await _loadTaskOrder();
notifyListeners();
}
Future<void> _loadTasks() async {
_tasks.clear();
return _repository.loadTasks().then((value) => _tasks.addAll(value));
}
Future<void> _loadTaskOrder() async {
_taskOrder.clear();
return _repository.loadTaskOrder().then(
(value) => _taskOrder.addAll(value),
);
}
}