ເສັ້ນທາງການອ່ານ: watch, read ແລະ listen.

Provider ໃຫ້ state ແບບ synchronous. AsyncProvider ສົ່ງ AsyncValue ແລະສາມາດ expose Future ແລະ Stream ດ້ວຍການຈັດການ lifecycle ທີ່ເຂັ້ມງວດ.

ປະເພດ provider

ເລືອກປະເພດ provider ຕາມ data source ແລະ update frequency.

Provider<T>

ຄ່າ synchronous ແລະ local derived state

AsyncProvider<T>

state ທີ່ຂັບດ້ວຍ Future/Stream ເປັນ AsyncValue<T>

provider.future

selector ທີ່ expose Provider<Future<T>>

ເຄັດລັບ

ຖ້າ state ມາຈາກ network ຫຼື stream, ໃຫ້ເລືອກ AsyncProvider ກ່ອນ. ເກັບ Provider ໄວ້ສຳລັບ pure synchronous logic.

ຕາຕະລາງ API ການອ່ານ

ໃຊ້ watch ໃນ build paths, read ສຳລັບ one-shot access, ແລະ listen ສຳລັບ side effects.

ທົ່ວໄປທີ່ສຸດ

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 ແລະ Stream ກັບ AsyncProvider

AsyncProvider ດຽວສາມາດສົ່ງ Future ຫຼືຜູກ Stream ຜ່ານ 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) ຍົກເລີກ subscription ກ່ອນໜ້າໃນຕອນ rebuild, invalidate ແລະ dispose.
AsyncValue ແມ່ນ sealed class: AsyncLoading / AsyncData / AsyncError.
pattern matching ກັບ switch ເຮັດໃຫ້ loading/error UI ຊັດເຈນ.

ຂັ້ນຕອນຕໍ່ໄປ

Mutations

ຍ້າຍ write operations ໄປທີ່ provider methods ແລະລັນຜ່ານ ref.invoke.

ເປີດ Flutter API

Flutter API

ເລືອກລະຫວ່າງ Consumer, ConsumerWidget, ແລະ ConsumerStatefulWidget.

ເປີດ API Reference