Шляхі чытання: 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);
Наступныя крокі
Mutations
Перамясціце аперацыі запісу ў метады provider і выконвайце іх праз ref.invoke.
Адкрыць MutationsFlutter API
Выбірайце паміж Consumer, ConsumerWidget і ConsumerStatefulWidget.
Адкрыць API Reference