Шляхи читання: 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