ရေးသားမှုလမ်းကြောင်းသည် ထင်ရှားနေဆဲဖြစ်သည်။

Mutations များကို provider methods အဖြစ် သတ်မှတ်ပြီး MutationToken ဖြင့် state ကို စောင့်ကြည့်ကာ ref.invoke(call) မှတစ်ဆင့် လုပ်ဆောင်ပါ။

Mutation တည်ဆောက်ရေးအခြေခံများ

Mutation သည် mutate(token, body, concurrency: ...) မှ ပြန်လာသော Call<R, State> ဖြစ်သည်။

Token

late final renameMut = mutation<void>(#rename)

Execution

await ref.invoke(provider.rename(...))

State

Idle / Pending / Success / Error via ref.watch(token)

注意

notifier.method() ပုံစံ API များနှင့်မတူဘဲ miniriverpod သည် mutation execution ကို ပထမတန်းစား call object အဖြစ် ပြုလုပ်ထားသည်။

Mutation တစ်ခုကို လုပ်ဆောင်ရန်

ref.invoke ကိုသုံးပါ၊ ထို့ကြောင့် cancellation နှင့် drop အပြုအမူများကို caller တွင် မြင်ရမည်။

လုပ်ဆောင်ရန်

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.

ဥပမာ: optimistic update + restart

ပုံမှန် write pattern တစ်ခုသည် AsyncData ကို optimistically update လုပ်ပြီးနောက် server response နှင့် sync လုပ်သည်။

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 သည် ပိုဟောင်းသော callers များသို့ CancelledMutation ကို throw လုပ်နိုင်သည်။
dropLatest သည် busy ဖြစ်နေချိန်တွင် DroppedMutation ကို throw လုပ်နိုင်သည်။
ယာယီ cancellation errors များကို ဖုံးကွယ်လိုသည့်အခါ UI ထဲတွင် ၎င်းတို့ကို ဖမ်းယူပါ။

နောက်တစ်ဆင့်များ

Flutter API

ConsumerWidget သို့မဟုတ် ConsumerStatefulWidget ကိုသုံး၍ mutation state ကို UI နှင့်ချိတ်ဆက်ပါ။

Flutter API ဖွင့်ရန်

API Reference

invoke, mutation, mutate နှင့် MutationState အမျိုးအစားများကို အမြန်ပြန်သုံးသပ်ပါ။

API Reference ဖွင့်ရန်