Lugemisteed: watch, read ja listen.

Provider annab sünkroonse oleku. AsyncProvider tagastab AsyncValue ja võib pakkuda Future'i ja Streami range elutsükli haldusega.

Provideri tüübid

Vali provideri tüüp andmeallika ja värskendussageduse järgi.

Provider<T>

Sünkroonsed väärtused ja lokaalne tuletatud olek

AsyncProvider<T>

Future/Streamiga juhitud olek AsyncValue<T>-na

provider.future

Parinkiklis, atskleidžiantis Provider<Future<T>>

Vihje

Kui olek tuleb võrgust või streamist, eelista esmalt AsyncProviderit. Hoia Provider puhta sünkroonse loogika jaoks.

Lugemise API maatriks

Kasuta watch'i buildi teedes, read'i ühekordseks ligipääsuks ja listen'i kõrvalmõjude jaoks.

Kõige tavalisem

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 ja Stream AsyncProvideriga

Üks AsyncProvider võib tagastada Future'i või siduda Streami läbi 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) tühistab eelmise tellimuse rebuildi, invalidate'i ja dispose'i ajal.
AsyncValue on suletud klass: AsyncLoading / AsyncData / AsyncError.
switch'iga mustrimängimine hoiab laadimise/vea UI selgena.

Järgmised sammud

Mutations

Tõsta kirjutamisoperatsioonid provideri meetoditesse ja käivita need ref.invoke kaudu.

Ava Flutter API

Flutter API

Vali Consumer, ConsumerWidgeti ja ConsumerStatefulWidgeti vahel.

Ava API Reference