import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../../core/api/api_client.dart'; import 'data/goals_api.dart'; final goalsApiProvider = Provider((ref) => GoalsApi(ref.watch(apiProvider).dio)); final goalsProvider = FutureProvider.autoDispose>((ref) => ref.watch(goalsApiProvider).list()); /// Progress is computed server-side and refetched per goal — the client never projects /// anything itself. final goalProgressProvider = FutureProvider.autoDispose.family((ref, id) async { return ref.watch(goalsApiProvider).progress(id); }); /// After any create/patch/delete the list and every progress card are refetched: the /// numbers are recomputed on the server, not patched in the app. void invalidateGoals(WidgetRef ref) { ref.invalidate(goalsProvider); ref.invalidate(goalProgressProvider); }