Патеки за читање: watch, read и listen.

Provider дава синхрона состојба. AsyncProvider враќа AsyncValue и може да изложи Future и Stream со строго управување со животниот циклус.

Типови provider

Изберете тип provider според изворот на податоци и фреквенцијата на ажурирање.

Provider<T>

Синхрони вредности и локално изведена состојба

AsyncProvider<T>

Состојба водена од Future/Stream како AsyncValue<T>

provider.future

Селектор што изложува Provider<Future<T>>

Совет

Ако состојбата доаѓа од мрежа или stream, прво изберете AsyncProvider. Оставете Provider за чиста синхрона логика.

Матрица на API за читање

Користете watch во build-патеки, 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 или да поврзе Stream преку 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) ја поништува претходната претплата при rebuild, invalidate и dispose.
AsyncValue е sealed class: AsyncLoading / AsyncData / AsyncError.
Усогласувањето со switch го прави UI за вчитување/грешки експлицитен.

Следни чекори

Mutations

Преместете ги операциите за запишување во методи на provider и извршувајте ги преку ref.invoke.

Отвори Flutter API

Flutter API

Изберете помеѓу Consumer, ConsumerWidget и ConsumerStatefulWidget.

Отвори API Reference