Fluxul de scriere rămâne explicit.

Definește mutațiile ca metode ale providerului, monitorizează starea cu MutationToken și execută prin ref.invoke(call).

Blocurile de bază ale mutației

O mutație este un Call<R, State> returnat de 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)

Notă

Spre deosebire de API-urile de tip notifier.method(), miniriverpod transformă execuția mutației într-un obiect call de primă clasă.

Execută o mutație

Folosește ref.invoke astfel încât comportamentele de anulare și abandon să fie expuse apelantului.

Rulează

Opțiuni de concurență

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.

Exemplu: actualizare optimistă + restart

Un model obișnuit de scriere actualizează AsyncData optimist, apoi se sincronizează cu răspunsul serverului.

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 poate arunca CancelledMutation apelanților mai vechi.
dropLatest poate arunca DroppedMutation în timp ce este ocupat.
Prinde-le în UI când vrei să suprimi erorile temporare de anulare.

Pașii următori

Flutter API

Leagă starea mutației de UI folosind ConsumerWidget sau ConsumerStatefulWidget.

Deschide API Flutter

API Reference

Revizuiește rapid tipurile invoke, mutation, mutate și MutationState.

Deschide referința API