ארגונומיה בסגנון 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.

Built-in Concurrency

קריאות mutation תומכות ב‑concurrent, queue, restart ו‑dropLatest באמצעות ref.invoke(provider.method()).

מסלול כניסה מומלץ

עטפו את האפליקציה שלכם ב‑ProviderScope, הגדירו מחלקות Provider/AsyncProvider, והפעילו עדכוני מצב דרך ref.invoke עם קונקרנטיות מפורשת.

התקנה

flutter pub add miniriverpod

Mutation + Invoke

lib/main.dart
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