Percorsi di lettura: watch, read e listen.
Provider fornisce stato sincrono. AsyncProvider restituisce AsyncValue e può esporre Future e Stream con gestione rigorosa del ciclo di vita.
Tipi di provider
Scegli il tipo di provider in base alla fonte dei dati e alla frequenza di aggiornamento.
Provider<T>
Valori sincroni e stato derivato localmente
AsyncProvider<T>
Stato guidato da Future/Stream come AsyncValue<T>
provider.future
Selettore che espone Provider<Future<T>>
Suggerimento
Se lo stato proviene da rete o stream, preferisci prima AsyncProvider. Mantieni Provider per la logica sincrona pura.
Matrice dell'API di lettura
Usa watch nei percorsi di build, read per accesso una tantum e listen per effetti collaterali.
Più comune
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 e Stream con AsyncProvider
Un singolo AsyncProvider può restituire una Future o collegare uno Stream tramite 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);
Prossimi passi
Mutations
Sposta le operazioni di scrittura nei metodi del provider ed eseguili tramite ref.invoke.
Apri Flutter API