Riverpod-stilska ergonomija s eksplicitnim ponašanjem u izvođenju.

miniriverpod zadržava poznate Provider i AsyncProvider, ali ponašanje sužava na eksplicitne API-je: subclass + args za identitet nalik familyju, mutation tokene za ažuriranja i predvidljivo uklanjanje iz životnog ciklusa.

Bez generiranja koda

provideri nalik familyju, overrideovi i dependency injection modeliraju se kroz subclass + args + Scope, bez generiranja koda.

Ujedinjeni Async model

Jedan AsyncProvider obrađuje Future i Stream, uz strogo poništavanje pri rebuild, invalidate, refresh i dispose.

Ugrađena konkurentnost

Pozivi mutacija podržavaju concurrent, queue, restart i dropLatest putem ref.invoke(provider.method()).

Preporučeni početni tijek

Omotajte svoju aplikaciju s ProviderScope, definirajte Provider/AsyncProvider klase i pokrećite ažuriranja stanja kroz ref.invoke uz eksplicitnu konkurentnost.

Instalacija

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'));
Napomena o kompatibilnosti

miniriverpod namjerno ostaje Provider + AsyncProvider + WidgetRef blizu Riverpoda, ali zamjenjuje codegen-teške putove sa subclass + args, injekcijom temeljenom na Scopeu i eksplicitnim pozivima mutacija.

Prethodno

Otvoreni kod

Sljedeće

Instalacija