ارگونومی به سبک 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
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 جایگزین میکند.