Шляхи читання: 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.
Відкрити Flutter API