લખાણનો flow explicit રહે છે.

mutations ને provider methods તરીકે define કરો, MutationToken સાથે state monitor કરો, અને ref.invoke(call) મારફતે execute કરો.

મુટેશનના બિલ્ડિંગ બ્લોક્સ

મુટેશન એ 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 બનાવે છે.

મુટેશન ચલાવો

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

સામાન્ય લખાણ pattern AsyncData ને optimistic રીતે 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 ફેંકી શકે છે.
dropLatest જ્યારે વ્યસ્ત હોય ત્યારે DroppedMutation ફેંકી શકે છે.
તાત્કાલિક cancellation ભૂલો દબાવવા માંગો ત્યારે UI માં તેમને પકડો.

આગલા પગલાં

Flutter API

ConsumerWidget અથવા ConsumerStatefulWidget વડે mutation state ને UI સાથે જોડો.

Flutter API ખોલો

API Reference

invoke, mutation, mutate, અને MutationState પ્રકારોને ઝડપી સમીક્ષો.

API Reference ખોલો