स्पष्ट runtime व्यवहार के साथ Riverpod-शैली की ergonomics.

miniriverpod Provider और AsyncProvider को परिचित बनाए रखता है, लेकिन व्यवहार को स्पष्ट APIs तक सीमित करता है: family-जैसी पहचान के लिए subclass + args, अपडेट के लिए mutation tokens, और पूर्वानुमेय lifecycle disposal.

कोड जनरेशन नहीं

family-जैसे providers, overrides, और dependency injection को subclass + args + Scope के साथ मॉडल किया जाता है, बिना code generation के।

एकीकृत Async मॉडल

एक AsyncProvider Future और Stream दोनों को संभालता है, rebuild, invalidate, refresh, और dispose पर सख्त cancellation के साथ।

Built-in Concurrency

Mutation कॉल ref.invoke(provider.method()) के माध्यम से concurrent, queue, restart, और dropLatest को सपोर्ट करती हैं।

अनुशंसित शुरुआत का क्रम

अपने ऐप को ProviderScope से wrap करें, Provider/AsyncProvider classes परिभाषित करें, और explicit concurrency के साथ ref.invoke के माध्यम से state updates चलाएँ।

इंस्टॉल

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'));
संगतता नोट

miniriverpod जानबूझकर रहता है Provider + AsyncProvider + WidgetRef Riverpod के करीब, लेकिन codegen-heavy रास्तों को subclass + args, Scope-based injection, और स्पष्ट mutation calls से बदल देता है।