Jalur baca: watch, read, dan listen.

Provider mengelola 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 berbasis Future/Stream sebagai AsyncValue<T>

provider.future

Selector yang mengekspos Provider<Future<T>>

Kiat

Jika state berasal dari jaringan atau stream, prioritaskan AsyncProvider terlebih dahulu. Gunakan Provider hanya untuk logika sinkron murni.

Matriks API baca

Gunakan watch di dalam build path, read untuk akses sekali (one-off), dan listen untuk efek samping (side effects).

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

Sebuah 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.
Pencocokan pola (pattern matching) dengan switch membuat UI loading/error tetap eksplisit.

Langkah Selanjutnya

Mutations

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

Buka Flutter API

Flutter API

Pilih antara Consumer, ConsumerWidget, dan ConsumerStatefulWidget.

Buka API Reference