Riverpod stila ergonomika ar skaidru izpildlaika uzvedību.

miniriverpod saglabā Provider un AsyncProvider pazīstamus, bet ierobežo uzvedību līdz skaidrām API: subclass + args ģimenes tipa identitātei, mutation žetoni atjauninājumiem un paredzama dzīves cikla atbrīvošana.

Bez koda ģenerēšanas

ģimenes tipa provideri, pārrakstījumi un atkarību injekcija tiek modelēti ar subclass + args + Scope, bez koda ģenerēšanas.

Apvienots asinhronais modelis

Viens AsyncProvider apstrādā Future un Stream, ar stingru atcelšanu pārbūves, invalidate, refresh un dispose laikā.

Iebūvēta paralelitāte

Mutation izsaukumi atbalsta concurrent, queue, restart un dropLatest caur ref.invoke(provider.method()).

Ieteicamā ieviešanas plūsma

Ietiniet savu lietotni ProviderScope, definējiet Provider/AsyncProvider klases un veiciet stāvokļa atjauninājumus ar ref.invoke un skaidru paralelitātes kontroli.

Instalēšana

flutter pub add miniriverpod

Mutācija + izsaukums

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,
  );
}

// Lietotāja saskarne
await ref.invoke(userProvider.rename('Alice'));
Saderības piezīme

miniriverpod apzināti paliek Provider + AsyncProvider + WidgetRef tuvs Riverpod, bet codegen smagās daļas aizstāj ar subclass + args, Scope balstītu injekciju un skaidriem mutāciju izsaukumiem.

Iepriekšējais

Atvērtais kods