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

Адкрыць Mutations

Flutter API

Выбірайце паміж Consumer, ConsumerWidget і ConsumerStatefulWidget.

Адкрыць API Reference