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);
ref.emit(stream) beendet beim Rebuild, invalidate und dispose das vorherige Abonnement.
AsyncValue ist eine sealed class: AsyncLoading / AsyncData / AsyncError.
Pattern Matching mit switch hält die Lade-/Fehler-UI explizit.

Nächste Schritte

Mutations

Verschiebe Schreiboperationen in Provider-Methoden und führe sie über ref.invoke aus.

Flutter API öffnen

Flutter API

Wähle zwischen Consumer, ConsumerWidget und ConsumerStatefulWidget.

API Reference öffnen