ارگونومی به سبک Riverpod با رفتار صریح در زمان اجرا.

miniriverpod Provider و AsyncProvider را آشنا نگه می‌دارد، اما رفتار را به APIهای صریح محدود می‌کند: subclass + args برای هویت شبیه family، توکن‌های mutation برای به‌روزرسانی‌ها، و حذف چرخه‌عمر قابل پیش‌بینی.

بدون تولید کد

Providerهای شبیه family، overrideها و تزریق وابستگی با subclass + args + Scope مدل می‌شوند، بدون تولید کد.

مدل ناهمگام یکپارچه

یک 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

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,
  );
}

// رابط کاربری
await ref.invoke(userProvider.rename('Alice'));
نکته سازگاری

miniriverpod عمداً Provider + AsyncProvider + WidgetRef نزدیک به Riverpod باقی می‌ماند، اما مسیرهای وابسته به codegen را با subclass + args، تزریق مبتنی بر Scope و فراخوانی‌های صریح mutation جایگزین می‌کند.

قبلی

کد باز

بعدی

نصب