mutation<T, P> function

BloomMutation<T, P> mutation<T, P>({
  1. required MutationFn<T, P> mutate,
  2. List? optimisticKey,
  3. OptimisticUpdater<T, P>? optimisticData,
  4. List<List> invalidateKeys = const [],
  5. OnMutateCallback<P>? onMutate,
  6. OnSuccessCallback<T, P>? onSuccess,
  7. OnErrorCallback<P>? onError,
  8. OnSettledCallback<T, P>? onSettled,
})

Creates a declarative mutation with optional automated optimistic rollback and cache invalidation.

Example:

final deleteItem = mutation<bool, int>(
  mutate: (id) => api.deleteItem(id),
  invalidateKeys: [['items']],
);

Implementation

BloomMutation<T, P> mutation<T, P>({
  required MutationFn<T, P> mutate,
  List<dynamic>? optimisticKey,
  OptimisticUpdater<T, P>? optimisticData,
  List<List<dynamic>> invalidateKeys = const [],
  OnMutateCallback<P>? onMutate,
  OnSuccessCallback<T, P>? onSuccess,
  OnErrorCallback<P>? onError,
  OnSettledCallback<T, P>? onSettled,
}) {
  return BloomMutation<T, P>(
    mutateFn: mutate,
    optimisticKey: optimisticKey,
    optimisticData: optimisticData,
    invalidateKeys: invalidateKeys,
    onMutate: onMutate,
    onSuccess: onSuccess,
    onError: onError,
    onSettled: onSettled,
  );
}