ಬರೆಯುವ flow ಸ್ಪಷ್ಟವಾಗಿಯೇ ಇರುತ್ತದೆ.

mutations ಅನ್ನು provider methods ಆಗಿ define ಮಾಡಿ, MutationToken ಮೂಲಕ ಸ್ಥಿತಿಯನ್ನು ಗಮನಿಸಿ, ಮತ್ತು ಅವುಗಳನ್ನು ref.invoke(call) ಮೂಲಕ execute ಮಾಡಿ.

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() ಶೈಲಿಯ APIs ಗೆ ವಿರುದ್ಧವಾಗಿ, 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

ಸಾಮಾನ್ಯ ಬರವಣಿಗೆ 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 busy ಆಗಿರುವಾಗ DroppedMutation ಅನ್ನು ಎಸೆಯಬಹುದು.
ತಾತ್ಕಾಲಿಕ cancellation errors ಅನ್ನು suppress ಮಾಡಲು ಬಯಸಿದಾಗ ಅವುಗಳನ್ನು UI ನಲ್ಲಿ ಹಿಡಿಯಿರಿ.

ಮುಂದಿನ ಹಂತಗಳು

Flutter API

ConsumerWidget ಅಥವಾ ConsumerStatefulWidget ಬಳಸಿ mutation ಸ್ಥಿತಿಯನ್ನು UI ಗೆ ಜೋಡಿಸಿ.

Flutter API ತೆರೆಯಿರಿ

API Reference

invoke, mutation, mutate, ಮತ್ತು MutationState typeಗಳನ್ನು ತ್ವರಿತವಾಗಿ ಪರಿಶೀಲಿಸಿ.

API Reference ತೆರೆಯಿರಿ