observe method

MutationCancelFunction observe({
  1. MutationOnUpdateInitializedCallback? onUpdateInitialized,
  2. MutationOnUpdateDataCallback<R>? onUpdateData,
  3. MutationOnUpdateErrorCallback? onUpdateError,
  4. MutationOnUpdateLoadingCallback? onUpdateLoading,
  5. MutationOnCloseCallback<R>? onClose,
  6. bool attach = true,
})

Implementation

MutationCancelFunction observe({
  MutationOnUpdateInitializedCallback? onUpdateInitialized,
  MutationOnUpdateDataCallback<R>? onUpdateData,
  MutationOnUpdateErrorCallback? onUpdateError,
  MutationOnUpdateLoadingCallback? onUpdateLoading,
  MutationOnCloseCallback<R>? onClose,
  bool attach = true,
}) {
  if (onUpdateInitialized != null) {
    _onUpdateInitializedList.insert(0, onUpdateInitialized);
  }
  if (onUpdateData != null) {
    _onUpdateDataList.insert(0, onUpdateData);
  }
  if (onUpdateError != null) {
    _onUpdateErrorList.insert(0, onUpdateError);
  }
  if (onUpdateLoading != null) {
    _onUpdateLoadingList.insert(0, onUpdateLoading);
  }
  if (onClose != null) {
    _onCloseList.insert(0, onClose);
  }

  if (attach) {
    _attachCount++;
  }

  if (isAttached) {
    if (_mutateCallback != null) {
      final data = _mutateCallback!();
      tryMutate(data);
    } else if (_mutateAppendCallback != null) {
      final data = _mutateAppendCallback!();
      tryMutate(data, append: true);
    } else {
      _initialMutate();
    }
  }

  return () {
    _removeObserve(
        onUpdateInitialized: onUpdateInitialized,
        onUpdateData: onUpdateData,
        onUpdateError: onUpdateError,
        onUpdateLoading: onUpdateLoading,
        onClose: onClose);

    if (attach) {
      _attachCount--;
    }
  };
}