Ергономия в стил Riverpod с изрично поведение по време на изпълнение.
miniriverpod запазва познатите Provider и AsyncProvider, но свежда поведението до изрични API: подклас + аргументи за family-подобна идентичност, токени за мутации за обновления и предсказуемо освобождаване на жизнения цикъл.
Без генериране на код
family-подобните провайдъри, override-ите и dependency injection се моделират с подклас + аргументи + 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 и изрични извиквания на мутации.
Назад
Отворен кодНапред
Инсталация