वाचन मार्ग: watch, read आणि listen.
Provider synchronous state देतो. AsyncProvider AsyncValue परत करतो आणि कठोर lifecycle handling सह Future आणि Stream देऊ शकतो.
Provider प्रकार
data source आणि update frequency नुसार provider type निवडा.
Provider<T>
Synchronous values आणि local derived state
AsyncProvider<T>
Future/Stream-चालित state म्हणून AsyncValue<T>
provider.future
Provider<Future<T>> उघड करणारा selector
सूचना
state network किंवा stream मधून येत असल्यास, आधी AsyncProvider निवडा. Provider ला pure synchronous logic साठी ठेवा.
वाचन API मॅट्रिक्स
build paths मध्ये watch, one-shot access साठी read, आणि side effects साठी 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.
AsyncProvider सोबत Future आणि Stream
एक AsyncProvider Future परत करू शकतो किंवा ref.emit(stream) द्वारे 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 वेळी मागील subscription रद्द करते.
AsyncValue एक sealed class आहे: AsyncLoading / AsyncData / AsyncError.
switch सोबत pattern matching loading/error UI स्पष्ट ठेवते.