import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../data/models/task.dart'; import 'api_client_provider.dart'; final tasksProvider = AsyncNotifierProvider>(TasksNotifier.new); final projectTasksProvider = FutureProvider.family, int>((ref, projectId) { return ref.watch(tasksRepositoryProvider).getByProject(projectId); }); class TasksNotifier extends AsyncNotifier> { @override Future> build() async { return ref.watch(tasksRepositoryProvider).getAll(); } Future refresh() async { final fresh = await ref.read(tasksRepositoryProvider).getAll(); state = AsyncData(fresh); } Future create({ required String title, String? description, required TaskStatus status, required TaskPriority priority, DateTime? dueDate, int? projectId, }) async { final task = await ref.read(tasksRepositoryProvider).create( title: title, description: description, status: status, priority: priority, dueDate: dueDate, projectId: projectId, ); state = AsyncData([...state.value ?? [], task]); return task; } Future updateTask(int id, Map fields) async { final updated = await ref.read(tasksRepositoryProvider).update(id, fields); state = AsyncData([ for (final t in state.value ?? []) if (t.id == id) updated else t, ]); return updated; } Future delete(int id) async { await ref.read(tasksRepositoryProvider).delete(id); state = AsyncData([ for (final t in state.value ?? []) if (t.id != id) t, ]); } }