Жазуу агымы ачык бойдон калат.

Mutationдарды provider ыкмалары катары аныктап, абалды MutationToken менен көзөмөлдөп, аларды 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 аткарууну биринчи класстагы call object кылат.

Mutation иштетүү

ref.invoke колдонуңуз, ошондо cancel жана drop жүрүм-туруму чакыруучуга көрүнөт.

Иштетүү

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.

Мисал: оптимисттик жаңыртуу + restart

Жазуунун кеңири тараган үлгүсү AsyncDataны оптимисттик жаңыртып, андан кийин 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 эски чакыруучуларга CancelledMutation ыргыта алат.
dropLatest бош эмес кезде DroppedMutation ыргыта алат.
Убактылуу жокко чыгаруу каталарын жашыргыңыз келгенде аларды UIда кармаңыз.

Кийинки кадамдар

Flutter API

Mutation абалын ConsumerWidget же ConsumerStatefulWidget аркылуу UIга байланыштырыңыз.

Flutter API ачуу

API Reference

invoke, mutation, mutate жана MutationState типтерин тез карап чыгыңыз.

API Reference ачуу