مسیرهای خواندن: watch، read و listen.

Provider حالت همگام می‌دهد. AsyncProvider AsyncValue برمی‌گرداند و می‌تواند Future و Stream را با مدیریت سخت‌گیرانه چرخه‌عمر ارائه کند.

انواع provider

نوع provider را بر اساس منبع داده و دفعات به‌روزرسانی انتخاب کنید.

Provider<T>

مقادیر همگام و state مشتق‌شده محلی

AsyncProvider<T>

state مبتنی بر Future/Stream به‌صورت AsyncValue<T>

provider.future

selectorی که Provider<Future<T>> را expose می‌کند

نکته

اگر state از شبکه یا stream می‌آید، اول AsyncProvider را انتخاب کنید. Provider را برای منطق صرفاً همگام نگه دارید.

ماتریس API خواندن

watch را در مسیرهای build، read را برای دسترسی یک‌باره و listen را برای side effectها استفاده کنید.

رایج‌ترین

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 برگرداند یا با ref.emit(stream) به 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) هنگام rebuild، invalidate و dispose اشتراک قبلی را لغو می‌کند.
AsyncValue یک sealed class است: AsyncLoading / AsyncData / AsyncError.
pattern matching با switch، UI بارگذاری/خطا را صریح نگه می‌دارد.

گام‌های بعدی

Mutations

عملیات نوشتن را به متدهای provider منتقل کنید و با ref.invoke اجرا کنید.

باز کردن Flutter API

Flutter API

بین Consumer، ConsumerWidget و ConsumerStatefulWidget انتخاب کنید.

باز کردن API Reference