drawInfoDialog method

void drawInfoDialog(
  1. Canvas canvas
)

Implementation

void drawInfoDialog(ui.Canvas canvas) {
  if(tab.index!=null&&tab.x!=null&&tab.y!=null&&radarMap.dilog!&&dilogText!=null){
    List<LegendModel> legendModels = radarMap.legend.map((item) => item).toList();
    List<double> mapDataModels = radarMap.data.map((item) => item.data[tab.index!]).toList();
    // for(int i=0;i<radarMap.data.length;i++){
    //   legendModels.add(radarMap.legend[i]);
    //   mapDataModels.add(radarMap.data[i].data[tab.index!]);
    // }
    //

  IndicatorModel indicatorModel = radarMap.indicator[tab.index!];
    double maxWidth = radarMap.dialogModel?.maxWidth??150.0;

    final paragraphBuilder = ui.ParagraphBuilder(ui.ParagraphStyle(
        textAlign: TextAlign.center,
        fontSize: radarMap.dialogModel?.textFontSize??13,
        fontWeight: FontWeight.normal));
    paragraphBuilder.pushStyle(ui.TextStyle(color: Colors.white , textBaseline: ui.TextBaseline.alphabetic));



    paragraphBuilder.addText(dilogText!.call(indicatorModel,legendModels,mapDataModels));
    var paragraph = paragraphBuilder.build();
    paragraph.layout(ui.ParagraphConstraints(width: maxWidth));
    var bian = 6;
    var sanjiao = 10;
    var rectx = tab.x! - paragraph.width/2 ;
    var recty = tab.y! + ((tab.y!>0)?-paragraph.height-sin(45)*sanjiao - bian:sin(45)*sanjiao+bian);


    var rect = RRect.fromLTRBR(rectx, recty -bian, paragraph.width +rectx , paragraph.height+recty +bian ,const Radius.circular(15));
    canvas.drawRRect(rect, mDialogPaint);

    mDialogPath.moveTo(tab.x!, tab.y!);
    mDialogPath.lineTo(tab.x! -sanjiao,tab.y!+ ((tab.y!>0)?-sanjiao:sanjiao));
    mDialogPath.lineTo(tab.x! +sanjiao,tab.y!+((tab.y!>0)?-sanjiao:sanjiao));
    canvas.drawPath(mDialogPath,mDialogPaint);
    var of = Offset(rectx,recty);
    canvas.drawParagraph(paragraph, of);
    // var rect = Rect.fromCenter(center: Offset(tab.x! + ((tab.x!>0)?0:0), tab.y!), width: paragraph.width, height:paragraph.height);

  }
}