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

lib/main.dart
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 koda

Naslednja

Namestitev