Alur penulisan tetap eksplisit.

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

Blok penyusun mutasi

Sebuah mutasi 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 mutasi sebagai call object kelas satu.

Jalankan sebuah mutasi

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

Jalankan

Opsi konkurensi

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 optimis + restart

Pola penulisan yang umum adalah memperbarui AsyncData secara optimis, lalu menyinkronkannya 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 error ini di UI jika Anda ingin meredam error pembatalan sementara.

Langkah berikutnya

Flutter API

Hubungkan status mutasi ke UI menggunakan ConsumerWidget atau ConsumerStatefulWidget.

Buka Flutter API

API Reference

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

Buka API Reference