Пътища за четене: 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