נתיבי קריאה: watch, read ו-listen.

Provider נותן מצב סינכרוני. AsyncProvider מחזיר AsyncValue ויכול לחשוף Future ו-Stream עם טיפול מחמיר במחזור החיים.

סוגי provider

בחרו סוג provider לפי מקור הנתונים ותדירות העדכון.

Provider<T>

ערכים סינכרוניים ומצב נגזר מקומי

AsyncProvider<T>

מצב מונע Future/Stream כ-AsyncValue<T>

provider.future

selector שחושף Provider<Future<T>>

טיפ

אם המצב מגיע מהרשת או מ-stream, העדיפו קודם AsyncProvider. השאירו Provider ללוגיקה סינכרונית טהורה.

מטריצת API קריאה

השתמשו ב-watch ב-build paths, ב-read לגישה חד-פעמית וב-listen לאפקטים משניים.

הכי נפוץ

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) מבטל את המנוי הקודם בעת rebuild, invalidate ו-dispose.
AsyncValue היא sealed class: AsyncLoading / AsyncData / AsyncError.
התאמת תבניות עם switch שומרת על UI של טעינה/שגיאות מפורש.

השלבים הבאים

Mutations

העבירו פעולות כתיבה למתודות provider והריצו אותן דרך ref.invoke.

פתח Mutations

Flutter API

בחרו בין Consumer, ConsumerWidget ו-ConsumerStatefulWidget.

פתיחת API Reference