વાંચન માર્ગો: watch, read અને listen.
Provider synchronous state આપે છે. AsyncProvider AsyncValue પાછું આપે છે અને કડક lifecycle handling સાથે Future અને Stream expose કરી શકે છે.
Provider ના પ્રકારો
data source અને update frequency પ્રમાણે provider type પસંદ કરો.
Provider<T>
સિંક્રોનસ values અને local derived state
AsyncProvider<T>
Future/Stream-ચાલિત state તરીકે AsyncValue<T>
provider.future
Provider<Future<T>> expose કરતો 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 ને સ્પષ્ટ રાખે છે.