ලිවීමේ ප්‍රවාහය පැහැදිලිවම පවතී.

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 එක first-class 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 optimistic ලෙස යාවත්කාලීන කර, පසුව 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 විවෘත කරන්න