Olvasási utak: watch, read és listen.

A Provider szinkron állapotot ad. Az AsyncProvider AsyncValue-t ad vissza, és Future-t és Streamet is exponálhat szigorú életciklus-kezeléssel.

Providertípusok

Válaszd ki a providertípust az adatforrás és a frissítési gyakoriság alapján.

Provider<T>

Szinkron értékek és helyben levezetett állapot

AsyncProvider<T>

Future/Stream által vezérelt állapot AsyncValue<T>-ként

provider.future

Olyan szelekor, amely kiadja a Provider<Future<T>>-t

Tipp

Ha az állapot hálózatból vagy streamből jön, először az AsyncProvider-t válaszd. A Provider maradjon a tisztán szinkron logikához.

API-olvasási mátrix

A build utakban használj watch-ot, egyszeri hozzáféréshez read-et, mellékhatásokhoz listen-t.

Leggyakoribb

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 és Stream AsyncProviderral

Egyetlen AsyncProvider visszaadhat Future-t, vagy Streamet köthet a ref.emit(stream) segítségével.

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);
A ref.emit(stream) újrafelépítés, invalidate és dispose során megszakítja az előző előfizetést.
Az AsyncValue egy sealed class: AsyncLoading / AsyncData / AsyncError.
A switch-szel végzett pattern matching egyértelművé teszi a betöltés-/hiba-UI-t.

Következő lépések

Mutations

Helyezd az írási műveleteket provider-metódusokba, és futtasd őket ref.invoke segítségével.

Flutter API megnyitása

Flutter API

Válassz a Consumer, ConsumerWidget és ConsumerStatefulWidget közül.

API Reference megnyitása