سهولة استخدام على طريقة Riverpod مع سلوك تشغيل صريح.
يحافظ miniriverpod على ألفة Provider وAsyncProvider، لكنه يحصر السلوك في واجهات صريحة: subclass + args لهوية شبيهة بـ family، ورموز mutation للتحديثات، وإزالة متوقعة لدورة الحياة.
من دون توليد كود
تُنمذج المزوّدات الشبيهة بـ family، وعمليات التجاوز، وحقن التبعيات عبر subclass + args + Scope، من دون توليد كود.
نموذج متزامن موحّد
يتولى AsyncProvider واحد التعامل مع Future وStream، مع إلغاء صارم عند إعادة البناء أو invalidate أو refresh أو dispose.
تزامن مدمج
تدعم استدعاءات mutation أنماط concurrent وqueue وrestart وdropLatest عبر ref.invoke(provider.method()).
مسار البدء الموصى به
لفّ تطبيقك بـ ProviderScope، وعرّف فئات Provider/AsyncProvider، ونفّذ تحديثات الحالة عبر ref.invoke مع تحكم صريح في التوازي.
التثبيت
flutter pub add miniriverpod
Mutation + Invoke
class UserProvider extends AsyncProvider<User?> {
UserProvider() : super.args(null);
late final renameMut = mutation<void>(#rename);
Call<void, AsyncValue<User?>> rename(String name) => mutate(
renameMut,
(ref) async {
final api = ref.watch(apiProvider);
await api.rename(name);
ref.state = AsyncData(await api.me());
},
concurrency: Concurrency.restart,
);
}
// واجهة المستخدم
await ref.invoke(userProvider.rename('Alice'));
ملاحظة التوافق
يُبقي miniriverpod عمدًا Provider + AsyncProvider + WidgetRef قريبًا من Riverpod، لكنه يستبدل المسارات الثقيلة المعتمدة على توليد الكود بـ subclass + args، وحقن قائم على Scope، واستدعاءات mutation صريحة.
السابق
المصدر المفتوحالتالي
التثبيت