Putovi čitanja: watch, read i listen.
Provider daje sinkrono stanje. AsyncProvider vraća AsyncValue i može izložiti Future i Stream uz strogo upravljanje životnim ciklusom.
Tipovi providera
Odaberite tip providera prema izvoru podataka i učestalosti ažuriranja.
Provider<T>
Sinkrone vrijednosti i lokalno izvedeno stanje
AsyncProvider<T>
Stanje vođeno Future/Streamom kao AsyncValue<T>
provider.future
Selektor koji izlaže Provider<Future<T>>
Savjet
Ako stanje dolazi iz mreže ili streama, prvo odaberite AsyncProvider. Zadržite Provider za čistu sinkronu logiku.
Matrica API-ja za čitanje
Koristite watch u build putovima, read za jednokratni pristup i listen za sporedne učinke.
Najčešće
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 s AsyncProviderom
Jedan AsyncProvider može vratiti Future ili povezati Stream preko 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);
Sljedeći koraci
Mutations
Premjestite operacije pisanja u metode providera i izvršavajte ih preko ref.invoke.
Otvori Flutter API