Skriveflyten forblir eksplisitt.

Definer mutasjoner som provider-metoder, overvåk tilstanden med MutationToken, og kjør dem via ref.invoke(call).

Byggeklosser for mutasjoner

En mutasjon er en Call<R, State> som returneres av mutate(token, body, concurrency: ...).

Token

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

Execution

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

State

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

Merk

I motsetning til notifier.method()-stil-API-er gjør miniriverpod mutasjonskjøring til et førsteklasses call object.

Kjør en mutasjon

Bruk ref.invoke slik at avbrudd og drop-atferd blir synlig for den som kaller.

Kjør

Alternativer for samtidighet

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.

Eksempel: optimistisk oppdatering + restart

Et vanlig skrivemønster oppdaterer AsyncData optimistisk og synkroniserer deretter med serverresponsen.

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 kan kaste CancelledMutation til eldre kallere.
dropLatest kan kaste DroppedMutation mens noe er opptatt.
Fang dem i UI når du vil skjule midlertidige avbruddsfeil.

Neste steg

Flutter API

Knytt mutasjonsstatus til UI med ConsumerWidget eller ConsumerStatefulWidget.

Åpne Flutter API

API Reference

Se raskt gjennom typene invoke, mutation, mutate og MutationState.

Åpne API Reference