سهولة استخدام على طريقة 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

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

التالي

التثبيت