drawInfoDialog method
void
drawInfoDialog(
- 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);
}
}