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);
ref.emit(stream) membatalkan subscription sebelumnya saat rebuild, invalidate, dan dispose.
AsyncValue adalah sealed class: AsyncLoading / AsyncData / AsyncError.
Pattern matching dengan switch membuat UI loading/error tetap eksplisit.

Langkah Selanjutnya

Mutations

Pindahkan operasi tulis ke metode provider dan jalankan lewat ref.invoke.

Buka Flutter API

Flutter API

Pilih antara Consumer, ConsumerWidget, dan ConsumerStatefulWidget.

Buka API Reference