Ergonomie ve stylu Riverpodu s explicitním chováním za běhu.
miniriverpod ponechává Provider a AsyncProvider povědomé, ale omezuje chování na explicitní API: identitu podobnou rodinám přes subclass + args, aktualizace přes mutační tokeny a předvídatelné uvolňování životního cyklu.
Žádné generování kódu
Rodinám podobné providery, přepisování a injektáž závislostí jsou modelovány pomocí subclass + args + Scope, bez generování kódu.
Sjednocený asynchronní model
Jediný AsyncProvider zvládá Future i Stream, s přísným rušením při přestavbě, invalidate, refresh a dispose.
Vestavěná souběžnost
Volání mutací podporují concurrent, queue, restart a dropLatest přes ref.invoke(provider.method()).
Doporučený úvodní postup
Zabalte aplikaci do ProviderScope, definujte třídy Provider/AsyncProvider a spouštějte aktualizace stavu přes ref.invoke s explicitní souběžností.
Instalace
flutter pub add miniriverpod
Mutace + 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,
);
}
// Uživatelské rozhraní
await ref.invoke(userProvider.rename('Alice'));
Poznámka ke kompatibilitě
miniriverpod záměrně zachovává Provider + AsyncProvider + WidgetRef blízkost Riverpodu, ale nahrazuje cesty náročné na codegen pomocí subclass + args, injektáže založené na Scope a explicitních mutačních voláních.
Předchozí
Open SourceDalší
Instalace