Caminhos de leitura: watch, read e listen.
Provider fornece estado síncrono. AsyncProvider retorna AsyncValue e pode expor Future e Stream com tratamento estrito de ciclo de vida.
Tipos de provider
Escolha o tipo de provider pela fonte de dados e frequência de atualização.
Provider<T>
Valores síncronos e estado derivado local
AsyncProvider<T>
Estado guiado por Future/Stream como AsyncValue<T>
provider.future
Seletor que expõe Provider<Future<T>>
Dica
Se o estado vier da rede ou de stream, prefira primeiro AsyncProvider. Mantenha Provider para lógica síncrona pura.
Matriz da API de leitura
Use watch em caminhos de build, read para acesso único e listen para efeitos colaterais.
Mais comum
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 com AsyncProvider
Um único AsyncProvider pode retornar uma Future ou vincular um Stream via 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);
Próximos passos
Mutations
Mova operações de escrita para métodos de provider e execute-as via ref.invoke.
Abrir Flutter API