Alur penulisan tetap eksplisit.

Definisikan mutation sebagai metode provider, pantau status dengan MutationToken, dan jalankan melalui ref.invoke(call).

Blok penyusun mutation

Sebuah mutation adalah Call<R, State> yang dikembalikan dari 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)

Catatan

Berbeda dengan API bergaya notifier.method(), miniriverpod menjadikan eksekusi mutation sebagai call object kelas utama.

Jalankan sebuah mutation

Gunakan ref.invoke agar perilaku pembatalan dan drop terlihat oleh pemanggil.

Jalankan

Opsi concurrency

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.

Contoh: pembaruan optimistis + restart

Pola penulisan umum memperbarui AsyncData secara optimistis lalu menyinkronkan dengan respons server.

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 dapat melempar CancelledMutation ke pemanggil lama.
dropLatest dapat melempar DroppedMutation saat sibuk.
Tangkap itu di UI saat Anda ingin menekan error pembatalan sementara.

Langkah berikutnya

Flutter API

Hubungkan status mutation ke UI menggunakan ConsumerWidget atau ConsumerStatefulWidget.

Buka Flutter API

API Reference

Tinjau cepat tipe invoke, mutation, mutate, dan MutationState.

Buka API Reference