ארגונומיה בסגנון Riverpod עם התנהגות מפורשת בזמן ריצה.
miniriverpod שומר על Provider ו‑AsyncProvider מוכרים, אך מצמצם את ההתנהגות ל‑API מפורש: subclass + args לזיהוי בסגנון family, אסימוני mutation לעדכונים, ופינוי מחזור חיים צפוי.
ללא יצירת קוד
Providers בסגנון family, overrides ו‑dependency injection ממופים באמצעות subclass + args + Scope, ללא יצירת קוד.
מודל Async אחיד
AsyncProvider יחיד מטפל ב‑Future וב‑Stream, עם ביטול קפדני בזמן rebuild, invalidate, refresh ו‑dispose.
קונקרנטיות מובנית
קריאות mutation תומכות ב‑concurrent, queue, restart ו‑dropLatest באמצעות ref.invoke(provider.method()).
מסלול כניסה מומלץ
עטפו את האפליקציה שלכם ב‑ProviderScope, הגדירו מחלקות Provider/AsyncProvider, והפעילו עדכוני מצב דרך ref.invoke עם קונקרנטיות מפורשת.
התקנה
flutter pub add miniriverpod
מוטציה + 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 מפורשות.