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);
Langkah seterusnya
Mutations
Pindahkan operasi tulis ke kaedah provider dan jalankan melalui ref.invoke.
Buka Mutations