Der Schreibfluss bleibt explizit.

Definiere Mutationen als Provider-Methoden, beobachte den Zustand mit MutationToken und führe sie über ref.invoke(call) aus.

Bausteine von Mutationen

Eine Mutation ist ein Call<R, State>, der von mutate(token, body, concurrency: ...) zurückgegeben wird.

Token

late final renameMut = mutation<void>(#rename)

Execution

await ref.invoke(provider.rename(...))

State

Idle / Pending / Success / Error via ref.watch(token)

Hinweis

Anders als notifier.method()-artige APIs macht miniriverpod die Ausführung von Mutationen zu einem erstklassigen call object.

Eine Mutation ausführen

Nutze ref.invoke, damit Abbruch- und Drop-Verhalten für den Aufrufer sichtbar wird.

Ausführen

Nebenläufigkeitsoptionen

concurrent : run all calls in parallel (default).
queue      : FIFO; keep running queued calls even after an error.
restart    : cancel previous run, keep only latest call.
dropLatest : drop incoming calls while one is running.

Beispiel: optimistisches Update + restart

Ein gängiges Schreibmuster aktualisiert AsyncData optimistisch und synchronisiert sich dann mit der Serverantwort.

class UserProvider extends AsyncProvider<User?> {
  UserProvider() : super.args(null);

  late final renameMut = mutation<void>(#rename);

  Call<void, AsyncValue<User?>> rename(String newName) => mutate(
    renameMut,
    (ref) async {
      final cur = ref.watch(this).valueOrNull;
      ref.state = AsyncData((cur ?? const User()).copyWith(name: newName), isRefreshing: true);

      final api = ref.watch(apiProvider);
      await api.rename(newName);
      ref.state = AsyncData(await api.me());
    },
    concurrency: Concurrency.restart,
  );
}
restart kann CancelledMutation an ältere Aufrufer werfen.
dropLatest kann DroppedMutation werfen, solange etwas läuft.
Fange diese im UI ab, wenn du vorübergehende Abbruchfehler unterdrücken willst.

Nächste Schritte

Flutter API

Binde den Mutationszustand mit ConsumerWidget oder ConsumerStatefulWidget an die UI.

Flutter API öffnen

API Reference

Überblicke invoke, mutation, mutate und MutationState schnell.

API Reference öffnen