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);
ref.emit(stream) annule l'abonnement précédent lors de la reconstruction, de l'invalidation et de la destruction (dispose).
AsyncValue est une classe scellée : AsyncLoading / AsyncData / AsyncError.
Le filtrage par motif (pattern matching) avec switch maintient l'interface utilisateur de chargement/erreur explicite.

É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 mutations

Flutter API

Choisissez entre Consumer, ConsumerWidget et ConsumerStatefulWidget.

Ouvrir la référence de l'API