Ścieżki odczytu: watch, read i listen.
Provider daje stan synchroniczny. AsyncProvider zwraca AsyncValue i może udostępniać Future oraz Stream z restrykcyjną obsługą cyklu życia.
Typy providerów
Wybierz typ providera według źródła danych i częstotliwości aktualizacji.
Provider<T>
Wartości synchroniczne i lokalnie wyprowadzony stan
AsyncProvider<T>
Stan sterowany Future/Stream jako AsyncValue<T>
provider.future
Selektor, który wystawia Provider<Future<T>>
Wskazówka
Jeśli stan pochodzi z sieci lub streamu, najpierw wybierz AsyncProvider. Zostaw Provider dla czystej logiki synchronicznej.
Macierz API odczytu
Używaj watch w ścieżkach build, read do jednorazowego odczytu i listen dla efektów ubocznych.
Najczęściej używane
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 i Stream z AsyncProvider
Jeden AsyncProvider może zwrócić Future lub powiązać Stream przez 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);
Następne kroki
Mutations
Przenieś operacje zapisu do metod providera i wykonuj je przez ref.invoke.
Otwórz Mutations