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,
);
}
الخطوات التالية
Flutter API
ربط حالة التغيير بواجهة المستخدم باستخدام ConsumerWidget أو ConsumerStatefulWidget.
افتح واجهة برمجة تطبيقات فلاترAPI Reference
راجع أنواع Review invoke، mutation، mutate، و MutationState بسرعة.
مرجع واجهة برمجة التطبيقات المفتوحة