Патеки за читање: 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