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