Write flow يظل واضحًا.

حدد التغييرات كطرق للمزود، وراقب الحالة باستخدام MutationToken، وقم بتنفيذها من خلال ref.invoke(call).

لبنات التغيير

تغيير هو استدعاء `Call<R, State>` يتم إرجاعه من `mutate(token, body, concurrency: ...)`.

Token

late final renameMut = mutation<void>(#rename)

Execution

await ref.invoke(provider.rename(...))

State

Idle / Pending / Success / Error via ref.watch(token)

ملاحظة

على عكس واجهات برمجة التطبيقات مثل notifier.method()، يجعل miniriverpod من تنفيذ التغييرات عملية أولية.

تنفيذ تغيير

استخدم ref.invoke لإظهار سلوك الإلغاء والسقوط إلى المستدعي.

تشغيل

خيارات التزامن

concurrent : run all calls in parallel (default).
queue      : FIFO; keep running queued calls even after an error.
restart    : cancel previous run, keep only latest call.
dropLatest : drop incoming calls while one is running.

تحديث إيجابي + إعادة تشغيل

نمط كتابة شائع يقوم بتحديث AsyncData بشكل متفائل، ثم يقوم بمزامنة مع استجابة الخادم.

class UserProvider extends AsyncProvider<User?> {
  UserProvider() : super.args(null);

  late final renameMut = mutation<void>(#rename);

  Call<void, AsyncValue<User?>> rename(String newName) => mutate(
    renameMut,
    (ref) async {
      final cur = ref.watch(this).valueOrNull;
      ref.state = AsyncData((cur ?? const User()).copyWith(name: newName), isRefreshing: true);

      final api = ref.watch(apiProvider);
      await api.rename(newName);
      ref.state = AsyncData(await api.me());
    },
    concurrency: Concurrency.restart,
  );
}
إعادة التشغيل قد تؤدي إلى حدوث CancelledMutation للمستدعين القدامى.
قد يسبب dropLatest خطأ DroppedMutation أثناء العمل.
التقاط هذه في واجهة المستخدم عندما تريد إلغاء تفعيل أخطاء الإلغاء المؤقت.

الخطوات التالية

Flutter API

ربط حالة التغيير بواجهة المستخدم باستخدام ConsumerWidget أو ConsumerStatefulWidget.

افتح واجهة برمجة تطبيقات فلاتر

API Reference

راجع أنواع Review invoke، mutation، mutate، و MutationState بسرعة.

مرجع واجهة برمجة التطبيقات المفتوحة