一个简单的小技巧快速判断某个页面是不是flutter页面: 双指/三指滑动页面,页面滚动速度是滑动速度的两倍/三倍。
主要原因是在多指拖动事件处理中,flutter的处理逻辑是累加多个手指的操作效果 。大家可以本地尝试通过记录每个手指的移动路径,在handleEvent中获取平均移动Offset(而不是累加效果)来解决这个问题。
void _checkMultiPointerUpdate() {
if (_multiPointerMoveTrackers.isEmpty) {
return;
}
final Offset localDelta = _getMultiPointerLocalDelta();
final Offset position = _getMultiPointerPosition();
final Offset localPosition = _getMultiPointerLocalPosition();
_checkUpdate(
sourceTimeStamp: _multiPointerMoveTrackers.last.timeStamp,
delta: _getDeltaForDetails(localDelta),
primaryDelta: _getPrimaryValueFromOffset(localDelta),
globalPosition: position,
localPosition: localPosition,
);
}