Ergonomia in stile Riverpod con comportamento runtime esplicito.
miniriverpod mantiene familiari Provider e AsyncProvider, ma restringe il comportamento in API esplicite: subclass + args per un'identità tipo family, token di mutazione per gli aggiornamenti e un ciclo di vita prevedibile.
Nessuna generazione di codice
provider simili alle family, override e dependency injection sono modellati con subclass + args + Scope, senza generazione di codice.
Modello async unificato
Un singolo AsyncProvider gestisce Future e Stream, con cancellazione rigorosa su rebuild, invalidate, refresh e dispose.
Concorrenza integrata
Le chiamate di mutazione supportano concurrent, queue, restart e dropLatest tramite ref.invoke(provider.method()).
Percorso di onboarding consigliato
Avvolgi la tua app con ProviderScope, definisci classi Provider/AsyncProvider e gestisci gli aggiornamenti di stato tramite ref.invoke con concorrenza esplicita.
Installa
flutter pub add miniriverpod
Mutazione + 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,
);
}
// UI
await ref.invoke(userProvider.rename('Alice'));
Nota di compatibilità
miniriverpod mantiene intenzionalmente Provider + AsyncProvider + WidgetRef una distanza ridotta da Riverpod, ma sostituisce i percorsi pesanti di codegen con subclass + args, injection basata su Scope e chiamate di mutazione esplicite.
Precedente
Open SourceSuccessivo
Installazione