selectLineData method
dynamic
selectLineData(
- dynamic type
Implementation
selectLineData(type) {
bool result = false;
// print('现在是 竖屏吗 ${klineState.isPortrait}');
if(!klineState.widget.isWeb && klineState.isPortrait){
return result;//非web竖屏不可以编辑线,所以这里不能选中线
}
for (var line in lineData.values) {
int lineL = line.length;
for (int i = 0; i < lineL; i++) {
var lineObj = line[i];
if (lineObj['p'].length == 0) {
continue;
}
//循环判断
var lineSelected = draw.isOnLine(
kElement['k']!['x'],
kElement['k']!['y'],
kElement['k']!['w'],
kElement['k']!['h'],
lineObj['lineType'],
lineObj,
this,
klineState.currentPosition.dx,
klineState.currentPosition.dy);
// print('是否在线上结果 : $lineSelected');
if (!result &&
lineSelected != null &&
(lineSelected['inline'] || lineSelected['inPoint'])) {
result = lineSelected['inline'] || lineSelected['inPoint']; //是否在某根画线上
selLineData = lineObj;
if (type == "down") {
//如果是按下 则 设置选中
lineObj['selected'] = true;
//判断点击的是线还是点 如果是点是哪个点 point 记录了点击的点的索引 -1代表点击了线 默认-1
lineObj['point'] = -1;
if (lineSelected['inPoint']) {
lineObj['point'] = lineSelected['inPointI'];
} else if (lineSelected['inline']) {
//当点击了线而不是点 把线上的每一个点都记录到oldPoint 用来辅助计算
lineObj['oldPoint'] = lineSelected['point'];
}
} else {
//如果是移动 则 设置高亮 这里没有移动选中的高亮状态了
lineObj['highlight'] = true;
}
} else {
if (type == "down") {
//如果是按下 则 设置未选中
lineObj['selected'] = false;
} else {
//如果是移动 则 设置未高亮 这里没有移动选中的高亮状态了
lineObj['highlight'] = false;
}
}
}
}
isSelDrawLine = result;
return result;
}