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);
Pașii următori
Mutations
Mută operațiile de scriere în metodele provider-ului și execută-le prin ref.invoke.
Deschide API Flutter