Ścieżki odczytu: watch, read i listen.

Provider daje stan synchroniczny. AsyncProvider zwraca AsyncValue i może udostępniać Future oraz Stream z restrykcyjną obsługą cyklu życia.

Typy providerów

Wybierz typ providera według źródła danych i częstotliwości aktualizacji.

Provider<T>

Wartości synchroniczne i lokalnie wyprowadzony stan

AsyncProvider<T>

Stan sterowany Future/Stream jako AsyncValue<T>

provider.future

Selektor, który wystawia Provider<Future<T>>

Wskazówka

Jeśli stan pochodzi z sieci lub streamu, najpierw wybierz AsyncProvider. Zostaw Provider dla czystej logiki synchronicznej.

Macierz API odczytu

Używaj watch w ścieżkach build, read do jednorazowego odczytu i listen dla efektów ubocznych.

Najczęściej używane

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 i Stream z AsyncProvider

Jeden AsyncProvider może zwrócić Future lub powiązać Stream przez 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) anuluje poprzednią subskrypcję przy przebudowie, invalidate i dispose.
AsyncValue to sealed class: AsyncLoading / AsyncData / AsyncError.
Dopasowanie wzorców z switch utrzymuje UI ładowania/błędów wprost.

Następne kroki

Mutations

Przenieś operacje zapisu do metod providera i wykonuj je przez ref.invoke.

Otwórz Mutations

Flutter API

Wybierz między Consumer, ConsumerWidget i ConsumerStatefulWidget.

Otwórz API Reference