Lesewege: watch, read und listen.
Provider liefert synchronen Zustand. AsyncProvider gibt AsyncValue zurück und kann Future und Stream mit strikter Lifecycle-Behandlung bereitstellen.
Providertypen
Wähle den Providertyp nach Datenquelle und Aktualisierungshäufigkeit.
Provider<T>
Synchrone Werte und lokal abgeleiteter Zustand
AsyncProvider<T>
Future-/Stream-gesteuerter Zustand als AsyncValue<T>
provider.future
Selektor, der Provider<Future<T>> bereitstellt
Tipp
Wenn der Zustand aus Netzwerk oder Stream kommt, verwende zuerst AsyncProvider. Behalte Provider für reine synchrone Logik.
API-Matrix lesen
Verwende watch in Build-Pfaden, read für einmaligen Zugriff und listen für Seiteneffekte.
Am häufigsten
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 und Stream mit AsyncProvider
Ein einzelner AsyncProvider kann eine Future zurückgeben oder einen Stream über ref.emit(stream) binden.
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);
Nächste Schritte
Mutations
Verschiebe Schreiboperationen in Provider-Methoden und führe sie über ref.invoke aus.
Flutter API öffnenFlutter API
Wähle zwischen Consumer, ConsumerWidget und ConsumerStatefulWidget.
API Reference öffnen