Ergonomija v slogu Riverpoda z izrecnim vedenjem v času izvajanja.
miniriverpod ohranja znani občutek Providerja in AsyncProviderja, vendar vedenje zoži na izrecne API-je: podrazred + args za identiteto podobno družini, žetone mutacij za posodobitve in predvidljivo sproščanje življenjskega cikla.
Brez generiranja kode
Ponudniki, podobni family, preglasitve in injekcija odvisnosti so modelirani s podrazredom + args + Scope, brez generiranja kode.
Enoten asinhroni model
En sam AsyncProvider obravnava Future in Stream, z natančnim preklicem ob ponovni gradnji, invalidate, refresh in dispose.
Vgrajena sočasnost
Klici mutacij podpirajo concurrent, queue, restart in dropLatest prek ref.invoke(provider.method()).
Priporočeni potek uvajanja
Ovijte svojo aplikacijo s ProviderScope, definirajte razrede Provider/AsyncProvider in izvajajte posodobitve stanja prek ref.invoke z izrecno sočasnostjo.
Namestitev
flutter pub add miniriverpod
Mutacija + 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'));
Opomba o združljivosti
miniriverpod namerno ostaja Provider + AsyncProvider + WidgetRef blizu Riverpoda, vendar poti, ki temeljijo na generiranju kode, nadomešča s podrazredom + args, injekcijo prek Scope in izrecnimi klici mutacij.
Prejšnja
Odprta kodaNaslednja
Namestitev