onPointerDown method

  1. @mustCallSuper
  2. @override
bool? onPointerDown(
  1. PointerDownEvent e
)
override

指针按下处理

Implementation

@mustCallSuper
@override
bool? onPointerDown(PointerDownEvent e) {
  super.onPointerDown(e);
  pointType = e.buttons;
  tapDownPosition = e.position;
  tapDownTime = currentMilliseconds;
  isCancel = null;

  // 处理主指针
  if (pointType == kPrimaryButton) {
    cancelTapUpTimer();
    onTapDown(e);
  }
  // 处理第二指针(鼠标右键,只响应最内层事件,不允许冒泡)
  else if (pointType == kSecondaryButton) {
    if (enabledSecondaryTap) {
      ElPointerManager.isOpen = false;
      ElPointerManager.eager(hashCode);

      // 在 web 端需要阻止浏览器原生右键事件
      if (kIsWeb) {
        if (preventContextMenuTimer != null) {
          preventContextMenuTimer!.cancel();
          preventContextMenuTimer = null;
        } else {
          BrowserContextMenu.disableContextMenu().then((res) {
            onSecondaryTapDown(e);
          });
        }
      } else {
        onSecondaryTapDown(e);
      }
    }
  }
  // 处理第三指针(鼠标中键,只响应最内层事件,不允许冒泡)
  else if (pointType == kTertiaryButton) {
    if (enabledTertiaryTap) {
      ElPointerManager.isOpen = false;
      ElPointerManager.eager(hashCode);
      onTertiaryTapDown(e);
    }
  }
  // 处理鼠标前进按钮事件(只响应最内层事件,不允许冒泡)
  else if (pointType == kForwardMouseButton) {
    if (enabledForwardTap) {
      ElPointerManager.isOpen = false;
      ElPointerManager.eager(hashCode);
      onForwardTapDown(e);
    }
  } // 处理鼠标后退按钮事件(只响应最内层事件,不允许冒泡)
  else if (pointType == kBackMouseButton) {
    if (enabledBackTap) {
      ElPointerManager.isOpen = false;
      ElPointerManager.eager(hashCode);
      onBackTapDown(e);
    }
  }

  return true;
}