مسیرهای خواندن: 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);
گامهای بعدی
Mutations
عملیات نوشتن را به متدهای provider منتقل کنید و با ref.invoke اجرا کنید.
باز کردن Flutter APIFlutter API
بین Consumer، ConsumerWidget و ConsumerStatefulWidget انتخاب کنید.
باز کردن API Reference