void _onHorizontalDragUpdate()

in lib/ui/aliplayer_play_control_widget.dart [233:255]


  void _onHorizontalDragUpdate(DragUpdateDetails details) {
    if (_startPosition == null) return;

    final Size containerSize = _getParentContainerSize(context);

    // 计算水平移动的距离
    double deltaX = details.globalPosition.dx - _startPosition!.dx;

    // 如果滑动距离未达到灵敏度阈值,则不触发回调
    if (deltaX.abs() < _dragSensitivityThreshold) return;

    // 将 deltaX 转换为相对于容器宽度的百分比(范围:-1 到 1)
    double seekDelta = deltaX / containerSize.width;
    double roundedSeekDelta = double.parse(seekDelta.toStringAsFixed(2));

    // 如果百分比变化未达到灵敏度阈值,则不触发回调
    if (_lastHorizontalValue == null ||
        (roundedSeekDelta - _lastHorizontalValue!).abs() >=
            _percentChangeThreshold) {
      widget.onHorizontalDragUpdate?.call(roundedSeekDelta);
      _lastHorizontalValue = roundedSeekDelta;
    }
  }