Lesestier: watch, read og listen.
Provider gir synkront tilstand. AsyncProvider returnerer AsyncValue og kan eksponere Future og Stream med streng lifecycle-håndtering.
Providertyper
Velg providertype etter datakilde og oppdateringsfrekvens.
Provider<T>
Synkrone verdier og lokalt avledet tilstand
AsyncProvider<T>
Future-/Stream-drevet tilstand som AsyncValue<T>
provider.future
Selektor som eksponerer Provider<Future<T>>
Tips
Hvis tilstanden kommer fra nettverk eller stream, velg først AsyncProvider. Behold Provider for ren synkron logikk.
Les API-matrise
Bruk watch i build-stier, read for engangsadgang og listen for sideeffekter.
Vanligst
watch / read / listen
ref.watch(provider) : subscribe and rebuild when value changes.
ref.read(provider) : read current snapshot without subscribing.
container.listen(...) : callback-driven updates; optional fireImmediately.
Future og Stream med AsyncProvider
Én AsyncProvider kan returnere en Future eller binde en Stream via ref.emit(stream).
final currentUser = AsyncProvider<User>((ref) async {
final api = ref.watch(apiProvider);
return api.me();
});
final liveUser = AsyncProvider<User>((ref) {
final stream = ref.watch(apiProvider).live();
ref.emit(stream);
return const User(name: 'Loading...');
}, autoDispose: true, autoDisposeDelay: const Duration(milliseconds: 250));
// Await as Future
final user = await ref.watch(currentUser.future);
ref.emit(stream) avbryter det forrige abonnementet ved nybygg, invalidate og dispose.
AsyncValue er en sealed class: AsyncLoading / AsyncData / AsyncError.
Mønstermatching med switch gjør lasting-/feil-UI tydelig.