Эрганоміка ў стылі Riverpod з выразнымі паводзінамі падчас выканання.
miniriverpod захоўвае знаёмыя Provider і AsyncProvider, але звужае паводзіны да выразных API: падклас + аргументы для сямейнападобнай ідэнтычнасці, токены змяненняў для абнаўленняў і прадказальнае вызваленне рэсурсаў жыццёвага цыклу.
Без генерацыі кода
Правайдэры, падобныя да family, перазапісы і ўкараненне залежнасцяў мадэлююцца праз падклас + аргументы + Scope без генерацыі кода.
Адзіная мадэль асінхроннасці
Адзін AsyncProvider апрацоўвае Future і Stream са строгім адменай пры rebuild, invalidate, refresh і dispose.
Убудаваная канкурэнтнасць
Выклікі мутацый падтрымліваюць рэжымы concurrent, queue, restart і dropLatest праз ref.invoke(provider.method()).
Рэкамендаваны шлях пачатку працы
Абгарніце сваю праграму ў ProviderScope, вызначце класы Provider/AsyncProvider і абнаўляйце стан праз ref.invoke з выразным кантролем канкурэнцыі.
Усталяваць
flutter pub add miniriverpod
Мутацыя + 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, але замяняе цяжкія шляхі генерацыі кода на падклас + args, укараненне праз Scope і выразныя выклікі мутацый.
Назад
Адкрыты кодДалей
Усталёўка