Providers
Provider fournit un état synchrone. AsyncProvider renvoie AsyncValue et peut exposer un Future et un Stream avec une gestion stricte du cycle de vie.
Provider types
Choisissez le type de fournisseur en fonction de la source de données et de la fréquence de mise à jour.
Provider<T>
Valeurs synchrones et état dérivé local
AsyncProvider<T>
État piloté par Future/Stream sous forme de AsyncValue<T>
provider.future
Sélecteur qui expose Provider<Future<T>>
Astuce
Si l'état provient du réseau ou d'un flux, préférez d'abord AsyncProvider. Conservez Provider pour la logique purement synchrone.
Matrice de l'API de lecture
Utilisez watch dans les chemins de build, read pour un accès ponctuel et listen pour les effets secondaires.
Le plus courant
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 et Stream avec AsyncProvider
Un seul AsyncProvider peut renvoyer un Future ou lier un 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);
Étapes suivantes
Mutations
Déplacez les opérations d'écriture dans les méthodes de fournisseur et exécutez-les via ref.invoke.
Ouvrir les mutationsFlutter API
Choisissez entre Consumer, ConsumerWidget et ConsumerStatefulWidget.
Ouvrir la référence de l'API