import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../data/models/note.dart'; import 'api_client_provider.dart'; final notesProvider = AsyncNotifierProvider>(NotesNotifier.new); class NotesNotifier extends AsyncNotifier> { @override Future> build() async { return ref.watch(notesRepositoryProvider).getAll(); } Future create( String title, String body, { List tags = const [], int? projectId, }) async { final note = await ref .read(notesRepositoryProvider) .create(title, body, tags: tags, projectId: projectId); state = AsyncData([...state.valueOrNull ?? [], note]); return note; } Future updateNote( int id, String title, String body, { List tags = const [], int? projectId, bool clearProject = false, }) async { final updated = await ref.read(notesRepositoryProvider).update( id, title, body, tags: tags, projectId: projectId, clearProject: clearProject, ); state = AsyncData([ for (final n in state.valueOrNull ?? []) if (n.id == id) updated else n, ]); return updated; } Future delete(int id) async { await ref.read(notesRepositoryProvider).delete(id); state = AsyncData([ for (final n in state.valueOrNull ?? []) if (n.id != id) n, ]); } } final noteDetailProvider = FutureProvider.family((ref, id) async { return ref.watch(notesRepositoryProvider).getOne(id); });