O fluxo de escrita continua explícito.

Defina mutações como métodos do provider, monitore o estado com MutationToken e execute-as via ref.invoke(call).

Blocos de construção de mutações

Uma mutação é um Call<R, State> retornado por 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)

Nota

Ao contrário de APIs no estilo notifier.method(), miniriverpod transforma a execução da mutação em um call object de primeira classe.

Executar uma mutação

Use ref.invoke para que os comportamentos de cancelamento e descarte fiquem visíveis para quem chama.

Distância (Run)

Opções de concorrência

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.

Exemplo: atualização otimista + restart

Um padrão comum de escrita atualiza AsyncData de forma otimista e depois sincroniza com a resposta do servidor.

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 pode lançar CancelledMutation para chamadores mais antigos.
dropLatest pode lançar DroppedMutation enquanto estiver ocupado.
Capture-os na UI quando quiser suprimir erros de cancelamento transitórios.

Próximos passos

Flutter API

Vincule o estado da mutação à UI usando ConsumerWidget ou ConsumerStatefulWidget.

Abrir Flutter API

API Reference

Revise rapidamente os tipos invoke, mutation, mutate e MutationState.

Abrir API Reference