Căi de citire: watch, read și listen.

Provider oferă stare sincronă. AsyncProvider returnează AsyncValue și poate expune Future și Stream cu gestionare strictă a ciclului de viață.

Tipuri de provider

Alege tipul de provider după sursa de date și frecvența de actualizare.

Provider<T>

Valori sincrone și stare derivată local

AsyncProvider<T>

Stare ghidată de Future/Stream ca AsyncValue<T>

provider.future

Selector care expune Provider<Future<T>>

Sfat

Dacă starea vine din rețea sau stream, preferă mai întâi AsyncProvider. Păstrează Provider pentru logică sincronă pură.

Matricea API-ului de citire

Folosește watch în build paths, read pentru acces unic și listen pentru efecte secundare.

Cel mai des

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 cu AsyncProvider

Un singur AsyncProvider poate returna un Future sau lega un Stream prin 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) anulează subscripția anterioară la rebuild, invalidate și dispose.
AsyncValue este o sealed class: AsyncLoading / AsyncData / AsyncError.
Pattern matching cu switch menține explicită UI-ul de încărcare/eroare.

Pașii următori

Mutations

Mută operațiile de scriere în metodele provider-ului și execută-le prin ref.invoke.

Deschide API Flutter

Flutter API

Alege între Consumer, ConsumerWidget și ConsumerStatefulWidget.

Deschide referința API