Riverpod-ähnliche Ergonomie mit explizitem Laufzeitverhalten.

miniriverpod hält Provider und AsyncProvider vertraut, schränkt das Verhalten aber auf explizite APIs ein: subclass + args für familienähnliche Identität, Mutationstokens für Aktualisierungen und vorhersehbares Aufräumen des Lebenszyklus.

Keine Codegenerierung

Familienähnliche Provider, Overrides und Dependency Injection werden mit subclass + args + Scope modelliert, ganz ohne Codegenerierung.

Einheitliches Async-Modell

Ein einzelner AsyncProvider behandelt Future und Stream mit striktem Abbruch bei Rebuild, Invalidate, Refresh und Dispose.

Integrierte Nebenläufigkeit

Mutationsaufrufe unterstützen concurrent, queue, restart und dropLatest über ref.invoke(provider.method()).

Empfohlener Einstiegspfad

Wickeln Sie Ihre App mit ProviderScope ein, definieren Sie Provider/AsyncProvider-Klassen und führen Sie Statusaktualisierungen über ref.invoke mit expliziter Nebenläufigkeit aus.

Installieren

flutter pub add miniriverpod

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

// Benutzeroberfläche
await ref.invoke(userProvider.rename('Alice'));
Kompatibilitätshinweis

miniriverpod bleibt bewusst Provider + AsyncProvider + WidgetRef nah an Riverpod, ersetzt aber codegen-lastige Pfade durch subclass + args, Scope-basierte Injektion und explizite Mutationsaufrufe.