Ergonomi i Riverpod-stil med eksplisitt opptidsatferd.

miniriverpod beholder kjente elementer fra Provider og AsyncProvider, men snevrer inn atferden til eksplisitte API-er: subclass + args for family-lignende identitet, mutasjonstokener for oppdateringer og forutsigbar livssyklus-disposal.

Ingen kodegenerering

family-lignende tilbydere (providers), overstyringer og avhengighetsinjeksjon (DI) er modellert med subclass + args + Scope, helt uten kodegenerering.

Enhetlig asynkron modell

En enkelt AsyncProvider håndterer både Future og Stream, med streng avbrytelse ved gjenoppbygging, ugyldiggjøring, oppdatering og sletting.

Innebygd samtidig kjøring

Mutasjonskall støtter samtidig kjøring, kø, omstart og dropLatest via ref.invoke(provider.method()).

Anbefalt introduksjonsflyt

Pakk inn appen din i ProviderScope, definer Provider/AsyncProvider-klasser, og kjør tilstandsoppdateringer gjennom ref.invoke med eksplisitt samtidig kjøring.

Installer

flutter pub add miniriverpod

Mutasjon + 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'));
Kompatibilitetsmerknad

miniriverpod beholder bevisst Provider + AsyncProvider + WidgetRef nært opptil Riverpod, men erstatter kodegenereringstunge stier med subclass + args, Scope-basert injeksjon og eksplisitte mutasjonskall.