selectLineData method

dynamic selectLineData(
  1. 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;
}