drawInfoText method

void drawInfoText(
  1. Canvas canvas
)

绘制顶点文字

Implementation

void drawInfoText(Canvas canvas) {
  // double r2 = radarMap.radius + 2; //下圆半径
  // for (int i = 0; i < elementLength; i++) {
  //   Offset offset;
  //   canvas.save();
  //   if (i != 0) {
  //     canvas.rotate(360 / elementLength * i / 180 * pi + pi);
  //     offset = Offset(-50, r2);
  //   } else {
  //     offset = Offset(-50, -r2 - textStyle!.fontSize! - 8);
  //   }
  //   drawText(
  //     canvas,
  //     radarMap.indicator[i].name,
  //     offset,
  //   );
  //   canvas.restore();
  // }

  double innerRadius = radarMap.radius; // 内圆半径
  double delta = 2 * pi / elementLength;
  var startRa = innerRadius ;
  var maxWidth = radarMap.maxWidth??40.0;
  var top = 0.0;
  var bottom = 0.0;
  ///角度
  double angle = 0;
  node.clear();
  for (int i = 0; i < elementLength; i++) {
    // drawText(
    //   canvas,
    //   radarMap.indicator[i].name,
    //   Offset(0 + startRa * sin(angle), 0 - startRa * cos(angle)),
    // );
    final paragraphBuilder = ui.ParagraphBuilder(ui.ParagraphStyle(
        textAlign: TextAlign.center,
        fontSize: textStyle!.fontSize??radarMap.radius * 0.10,
        fontWeight: FontWeight.normal));
    paragraphBuilder.pushStyle(ui.TextStyle(color: textStyle!.color , textBaseline: ui.TextBaseline.alphabetic));
    paragraphBuilder.addText(radarMap.indicator[i].name);
    var paragraph = paragraphBuilder.build();
    paragraph.layout(ui.ParagraphConstraints(width: maxWidth));

    // print("${0 + startRa * sin(angle)-paragraph.width/2}======${0 - startRa * cos(angle) - paragraph.height/2}");
    // print("${0 + startRa * sin(angle)-paragraph.width/2}======${0 - startRa * cos(angle) - paragraph.height/2}");

    var out = 10;

    var pianyix = sin(angle)*(paragraph.width/2 + out) ;
    var pianyiy = cos(angle)*(paragraph.height/2 + out);
    var of = Offset(0 + startRa * sin(angle)-paragraph.width/2 +pianyix, 0 - startRa * cos(angle) - paragraph.height/2 - pianyiy);
    var rect = Rect.fromCenter(center: Offset(0 + startRa * sin(angle) +pianyix -skewing, 0 - startRa * cos(angle) - pianyiy), width: paragraph.width, height:paragraph.height);

    canvas.drawParagraph(paragraph, of);
    angle += delta;

    if(i == 0){
      top = paragraph.height + out;
    }

    if(elementLength%2==0){
      if(i == elementLength/2){
        bottom = paragraph.height + out;
      }
    }else{
      if(i == elementLength~/2){
        bottom = paragraph.height + out;
      }
      if(i == elementLength~/2+1){
        if(bottom<paragraph.height){
          bottom = paragraph.height + out;
        }
      }
    }

    node.add(rect);
  }


  // print("${node.length}");
  // node.forEach((element) {
  //   print("${element.left} . ${element.top} 11");
  // });

  WidgetsBinding.instance!.addPostFrameCallback((timeStamp) {
    _widthHeight.call(top,bottom);
  });

  //
  // for (int s = ring; s > 0; s--) {
  //   ///起始位置
  //   var startRa = innerRadius/ring * s - radarMap.radius * 0.05;
  //   Offset offset = Offset(-maxWidth/2, -startRa);
  //   // fontSize: textStyle!.fontSize ?? radarMap.radius * 0.16,
  //
  //
  //   final paragraphBuilder = ui.ParagraphBuilder(ui.ParagraphStyle(
  //       textAlign: TextAlign.center,
  //       fontSize: line?.textFontSize ?? radarMap.radius * 0.1,
  //       fontWeight: FontWeight.normal));
  //   paragraphBuilder.pushStyle(ui.TextStyle(color: line?.textColor??Colors.black , textBaseline: ui.TextBaseline.alphabetic));
  //   paragraphBuilder.addText(lineText!.call(s,ring));
  //   var paragraph = paragraphBuilder.build();
  //   paragraph.layout(ui.ParagraphConstraints(width: maxWidth));
  //   canvas.drawParagraph(paragraph, offset);
  //
}