callTradeLineInMouse method
dynamic
callTradeLineInMouse(
- dynamic obj,
- dynamic isOnlyClear
Implementation
callTradeLineInMouse(obj, isOnlyClear) {
obj['isShowHoverX'] = false; //是否在关闭按钮
obj['isShowHoverZyZs'] = false; //是否在止盈止损按钮
obj['isShowHoverLine'] = false; //是否在挂单线 不用判断
obj['isShowHoverZy'] = false; //是否在止盈线 不用判断
obj['isShowHoverZyX'] = false; //是否在止盈线关闭按钮
obj['isShowHoverZs'] = false; //是否在止损线 不用判断
obj['isShowHoverZsX'] = false; //是否在止损线关闭按钮
obj['isOnLine'] = false;
if (!isOnlyClear) {
//如果不仅仅是清除状态,则计算是否在线上
bool result = false;
//py检测偏移 如果线距离鼠标点在 +py 和 -py 之间 则算选中
//btnPy检测偏移 如果按钮距离鼠标点在 +btnPy 和 -btnPy 之间 则算选中
//py2 py3的绝对值 线距离鼠标点的物理距离 用来判断哪根线里鼠标点最近
//py3 线和鼠标点在坐标系上的差值,鼠标在线上方为负值在线下方为正值
//oy 线在坐标系k线区域的y坐标
//暂时只精准检测按钮,整个左侧按钮区域不检测
double py2 = 0, btnPy = 14;
double my = klineState.currentPosition.dy;
double mx = klineState.currentPosition.dx;
if (obj.containsKey('oy') && obj['oy'] > 0) {
py2 = (my - obj['oy']).abs();
if (py2 < btnPy) {
if (obj['leftSize'].containsKey('x') &&
mx > obj['leftSize']['x'] &&
mx < obj['leftSize']['x'] + obj['leftSize']['w']) {
//检测是否在x上
if (obj['xSize'].containsKey('x') &&
mx > obj['xSize']['x'] &&
mx < obj['xSize']['x'] + obj['xSize']['w']) {
//在关闭按钮上
// print('在关闭按钮上');
obj['isShowHoverX'] = true;
result = true;
}
//检测是否在止盈止损上
else if (obj['zyzsSize'].containsKey('x') &&
mx > obj['zyzsSize']['x'] &&
mx < obj['zyzsSize']['x'] + obj['zyzsSize']['w']) {
//在止盈止损上
// print('在止盈止损按钮上');
obj['isShowHoverZyZs'] = true;
result = true;
} else {
//检测是否在
// print('在线上');
obj['isShowHoverLine'] = true;
result = true;
}
}
}
}
if (obj.containsKey('zyoy') && obj['zyoy'] > 0 && !result) {
py2 = (my - obj['zyoy']).abs();
if (py2 < btnPy) {
if (obj['leftZySize'].containsKey('x') &&
mx > obj['leftZySize']['x'] &&
mx < obj['leftZySize']['x'] + obj['leftZySize']['w']) {
//检测是否在x上
if (obj['zyxSize'].containsKey('x') &&
mx > obj['zyxSize']['x'] &&
mx < obj['zyxSize']['x'] + obj['zyxSize']['w']) {
//在止盈关闭按钮上
// print('在止盈关闭按钮上');
obj['isShowHoverZyX'] = true;
result = true;
} else {
//检测是否在
// print('在止盈上');
obj['isShowHoverZy'] = true;
result = true;
}
}
}
}
if (obj.containsKey('zsoy') && obj['zsoy'] > 0 && !result) {
py2 = (my - obj['zsoy']).abs();
if (py2 < btnPy) {
if (obj['leftZsSize'].containsKey('x') &&
mx > obj['leftZsSize']['x'] &&
mx < obj['leftZsSize']['x'] + obj['leftZsSize']['w']) {
//检测是否在x上
if (obj['zsxSize'].containsKey('x') &&
mx > obj['zsxSize']['x'] &&
mx < obj['zsxSize']['x'] + obj['zsxSize']['w']) {
//在止盈关闭按钮上
// print('在止损关闭按钮上');
obj['isShowHoverZsX'] = true;
result = true;
} else {
// print('在止损上');
obj['isShowHoverZs'] = true;
result = true;
}
}
}
}
obj['isOnLine'] = result; //是否在线上
// print('是否在线上: $result');
return result;
} else {
return false;
}
}