Jalur baca: watch, read, dan listen.
Provider memberi state sinkron. AsyncProvider mengembalikan AsyncValue dan dapat mengekspos Future dan Stream dengan penanganan siklus hidup yang ketat.
Tipe provider
Pilih tipe provider berdasarkan sumber data dan frekuensi pembaruan.
Provider<T>
Nilai sinkron dan state turunan lokal
AsyncProvider<T>
state yang digerakkan Future/Stream sebagai AsyncValue<T>
provider.future
selector yang mengekspos Provider<Future<T>>
Kiat
Jika state berasal dari jaringan atau stream, utamakan AsyncProvider terlebih dahulu. Simpan Provider untuk logika sinkron murni.
Matriks API baca
Gunakan watch di build path, read untuk akses sekali, dan listen untuk efek samping.
Paling umum
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 dan Stream dengan AsyncProvider
Satu AsyncProvider dapat mengembalikan Future atau mengikat Stream melalui 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);
Langkah Selanjutnya
Mutations
Pindahkan operasi tulis ke metode provider dan jalankan lewat ref.invoke.
Buka Flutter API