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;
}
}