Роҳҳои хондан: watch, read ва listen.

Provider ҳолати синхронӣ медиҳад. AsyncProvider AsyncValue бармегардонад ва метавонад Future ва Stream-ро бо идоракунии қатъии давраи ҳаёт пешкаш кунад.

Навъҳои Provider

Навъи provider-ро аз рӯи манбаи дода ва басомади навсозӣ интихоб кунед.

Provider<T>

Қиматҳои синхронӣ ва ҳолати маҳаллии ҳосилшуда

AsyncProvider<T>

Ҳолат ҳамчун AsyncValue<T> аз Future/Stream

provider.future

Интихобкунандае, ки Provider<Future<T>>-ро мекушояд

Маслиҳат

Агар ҳолат аз шабака ё stream ояд, аввал AsyncProvider-ро афзал донед. Барои мантиқи сирф синхронӣ Provider-ро нигоҳ доред.

Ҷадвали API барои хондан

Дар роҳҳои build барои watch, барои дастрасии якдафъаина read ва барои таъсирҳои паҳлӯӣ listen-ро истифода баред.

Аз ҳама маъмул

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 ва Stream бо AsyncProvider

Як AsyncProvider метавонад Future баргардонад ё тавассути ref.emit(stream) ба 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) ҳангоми азнавсохтан, invalidate ва dispose обунаи пешинаро қатъ мекунад.
AsyncValue синфи sealed аст: AsyncLoading / AsyncData / AsyncError.
Сабти намунавӣ бо switch интерфейси loading/error-ро возеҳ нигоҳ медорад.

Қадамҳои баъдӣ

Mutations

Амалиётҳои навиштанро ба методҳои провайдер интиқол диҳед ва онҳоро тавассути ref.invoke иҷро кунед.

Кушодани тағйирҳо

Flutter API

Миёни Consumer, ConsumerWidget ва ConsumerStatefulWidget интихоб кунед.

Кушодани API-и Flutter