سهولة استخدام على طريقة Riverpod مع سلوك تشغيل صريح.
يحافظ miniriverpod على ألفة Provider وAsyncProvider، لكنه يحصر السلوك في واجهات صريحة: subclass + args لهوية شبيهة بـ family، ورموز mutation للتحديثات، وإزالة متوقعة لدورة الحياة.
من دون توليد كود
تُنمذج المزوّدات الشبيهة بـ family، وعمليات التجاوز، وحقن التبعيات عبر subclass + args + Scope، من دون توليد كود.
نموذج متزامن موحّد
يتولى AsyncProvider واحد التعامل مع Future وStream، مع إلغاء صارم عند إعادة البناء أو invalidate أو refresh أو dispose.
Built-in Concurrency
تدعم استدعاءات 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,
);
}
// UI
await ref.invoke(userProvider.rename('Alice'));
Compatibility Note
يُبقي miniriverpod عمدًا Provider + AsyncProvider + WidgetRef قريبًا من Riverpod، لكنه يستبدل المسارات الثقيلة المعتمدة على توليد الكود بـ subclass + args، وحقن قائم على Scope، واستدعاءات mutation صريحة.
السابق
Open Sourceالتالي
التثبيت