getNearbyPoint method
Implementation
TouchBackModel getNearbyPoint(Offset localPosition,
{bool defaultCancelTouchChoose = true}) {
if (localPosition.dx <= _startX ||
localPosition.dx >= _endX ||
localPosition.dy >= _startY ||
localPosition.dy <= _endY) {
//不在坐标轴内部的点击
if (defaultCancelTouchChoose) {
return TouchBackModel(
startOffset: null,
size: Size.zero,
);
} else {
return TouchBackModel(
needRefresh: false, startOffset: null, size: Size.zero);
}
}
_touchCellModels.sort((a, b) => a.centerX.compareTo(b.centerX));
BarTouchCellModel? touchModel;
for (var i = 0; i < _touchCellModels.length - 1; i++) {
var currentX = _touchCellModels[i].centerX;
var nextX = _touchCellModels[i + 1].centerX;
if (i == 0 && localPosition.dx < currentX) {
touchModel = _touchCellModels.first;
break;
}
if (i == _touchCellModels.length - 2 && localPosition.dx >= nextX) {
touchModel = _touchCellModels[i + 1];
break;
}
if (localPosition.dx >= currentX && localPosition.dx < nextX) {
var speaceWidth = nextX - currentX;
if (localPosition.dx <= currentX + speaceWidth / 2) {
touchModel = _touchCellModels[i];
} else {
touchModel = _touchCellModels[i + 1];
}
break;
}
}
if (touchModel == null) {
return TouchBackModel(
startOffset: null,
size: Size.zero,
);
} else {
return TouchBackModel(
startOffset: touchModel.begainPoint,
size: touchModel.size,
backParam: touchModel.param);
}
}