Laluan baca: watch, read dan listen.

Provider memberikan state segerak. AsyncProvider memulangkan AsyncValue dan boleh mendedahkan Future dan Stream dengan pengendalian kitar hayat yang ketat.

Jenis provider

Pilih jenis provider berdasarkan sumber data dan kekerapan kemas kini.

Provider<T>

Nilai segerak dan state terbitan tempatan

AsyncProvider<T>

state dipacu Future/Stream sebagai AsyncValue<T>

provider.future

selector yang mendedahkan Provider<Future<T>>

Petua

Jika state datang daripada rangkaian atau stream, utamakan AsyncProvider dahulu. Simpan Provider untuk logik segerak tulen.

Matriks API baca

Gunakan watch dalam laluan build, read untuk akses sekali, dan listen untuk kesan sampingan.

Paling biasa

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 boleh memulangkan 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 langganan sebelumnya semasa rebuild, invalidate, dan dispose.
AsyncValue ialah sealed class: AsyncLoading / AsyncData / AsyncError.
Padanan corak dengan switch menjadikan UI loading/ralat jelas.

Langkah seterusnya

Mutations

Pindahkan operasi tulis ke kaedah provider dan jalankan melalui ref.invoke.

Buka Mutations

Flutter API

Pilih antara Consumer, ConsumerWidget, dan ConsumerStatefulWidget.

Buka Rujukan API