onMoveUpdate method

  1. @override
void onMoveUpdate(
  1. OpsMoveUpdateDetails details
)
override

Implementation

@override
void onMoveUpdate(OpsMoveUpdateDetails details) {
  var needStateIfNotDispose = false;
  var dx = details.localPoint.dx - _curX;
  var dy = details.localPoint.dy - _curY;

  if (widget.controller.painter!.highlightPerDragEnabled) {
    final highlighted = widget.controller.painter!.getHighlightByTouchPoint(
        details.localPoint.dx, details.localPoint.dy);
    if (highlighted?.equalTo(lastHighlighted) == false) {
      lastHighlighted = HighlightUtils.performHighlight(
          widget.controller.painter!, highlighted, lastHighlighted);
      needStateIfNotDispose = true;
    }
  }

  if (widget.controller.painter!.dragYEnabled &&
      widget.controller.painter!.dragXEnabled) {
    if (_inverted()) {
      /// if there is an inverted horizontalbarchart
      if (widget is HorizontalBarChart) {
        dx = -dx;
      } else {
        dy = -dy;
      }
    }
    widget.controller.painter?.translate(dx, dy);
    needStateIfNotDispose = true;
  } else {
    if (widget.controller.painter!.dragXEnabled) {
      if (_inverted()) {
        /// if there is an inverted horizontalbarchart
        if (widget is HorizontalBarChart) {
          dx = -dx;
        } else {
          dy = -dy;
        }
      }
      widget.controller.painter?.translate(dx, 0.0);
      needStateIfNotDispose = true;
    } else if (widget.controller.painter!.dragYEnabled) {
      if (_inverted()) {
        /// if there is an inverted horizontalbarchart
        if (widget is HorizontalBarChart) {
          dx = -dx;
        } else {
          dy = -dy;
        }
      }
      widget.controller.painter?.translate(0.0, dy);
      needStateIfNotDispose = true;
    }
  }

  if (widget.controller.touchEventListener != null) {
    var point = _getTouchValue(
        widget.controller.touchEventListener!.valueType(),
        details.globalPoint.dx,
        details.globalPoint.dy,
        details.localPoint.dx,
        details.localPoint.dy);
    widget.controller.touchEventListener?.onMoveUpdate(point.x, point.y);
  }

  if (needStateIfNotDispose) {
    setStateIfNotDispose();
  }

  _curX = details.localPoint.dx;
  _curY = details.localPoint.dy;
}