Унших замууд: watch, read, listen.

Provider нь синхрон төлөв өгдөг. AsyncProvider нь AsyncValue буцааж, хатуу lifecycle удирдлагатайгаар Future ба Stream санал болгож чадна.

Provider төрлүүд

Provider төрлийг өгөгдлийн эх үүсвэр ба шинэчлэлтийн давтамжаар сонго.

Provider<T>

Синхрон утга болон орон нутгийн derived төлөв

AsyncProvider<T>

Future/Stream-ээр удирдагдсан төлөв AsyncValue<T> хэлбэрээр

provider.future

Provider<Future<T>>-г ил гаргадаг selector

Зөвлөмж

Төлөв сүлжээ эсвэл stream-ээс ирвэл эхлээд AsyncProvider-ийг сонго. Provider-ийг цэвэр синхрон логикт үлдээгээрэй.

Унших API матриц

watch-ыг build замд, read-ийг нэг удаагийн хандалтад, listen-ийг side effect-д ашиглаарай.

Хамгийн түгээмэл

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.

AsyncProvider-тэй Future ба Stream

Нэг AsyncProvider ref.emit(stream) ашиглан Future буцаах эсвэл 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) нь rebuild, invalidate болон dispose үед өмнөх subscription-ийг цуцалдаг.
AsyncValue нь sealed class: AsyncLoading / AsyncData / AsyncError.
switch-тэй pattern matching нь ачаалал/алдааны UI-г ил тод байлгадаг.

Дараагийн алхмууд

Mutations

Бичих үйлдлүүдийг provider-ийн аргууд руу шилжүүлээд ref.invoke-ээр ажиллуул.

Mutations нээх

Flutter API

Consumer, ConsumerWidget, ConsumerStatefulWidget-ийн хооронд сонго.

API Reference нээх