Aliran penulisan kekal jelas.

Takrifkan mutasi sebagai kaedah provider, pantau state dengan MutationToken, dan laksanakan melalui ref.invoke(call).

Blok binaan mutasi

Mutasi ialah Call<R, State> yang dikembalikan daripada 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

Tidak seperti API gaya notifier.method(), miniriverpod menjadikan pelaksanaan mutasi sebagai objek panggilan kelas pertama.

Laksanakan mutasi

Gunakan ref.invoke supaya tingkah laku pembatalan dan penolakan kelihatan kepada pemanggil.

Jalankan

Pilihan 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: kemas kini optimistik + restart

Corak tulis biasa mengemas kini AsyncData secara optimistik, kemudian menyegerakkan dengan respons pelayan.

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 mungkin membuang CancelledMutation kepada pemanggil yang lebih lama.
dropLatest mungkin membuang DroppedMutation ketika sibuk.
Tangkap ini dalam UI apabila anda mahu menyenyapkan ralat pembatalan sementara.

Langkah seterusnya

Flutter API

Hubungkan state mutasi ke UI menggunakan ConsumerWidget atau ConsumerStatefulWidget.

Buka API Flutter

API Reference

Semak jenis invoke, mutation, mutate, dan MutationState dengan cepat.

Buka Rujukan API