import 'dart:ui'; import 'package:fis_measure/view/paint/ai_patint_controller.dart'; import 'package:fis_measure/view/paint/ai_patint_state.dart'; import 'package:fis_measure/view/paint/parts/index.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:path_drawing/path_drawing.dart'; /// ai描点 class PaintAIDots extends CustomPainter { final AiDotsResults aiDotsResults; late final aiPatintController = Get.find(); final int aiResultIndex; PaintAIDots( this.aiDotsResults, this.aiResultIndex, ); bool get isSelected => aiResultIndex == aiDotsResults.aiResultsIndex; @override void paint(Canvas canvas, Size size) { final contoursPaint = Paint() ..color = Colors.green ..strokeCap = StrokeCap.round ..strokeWidth = 3.0 ..style = PaintingStyle.stroke; // 遍历 contoursPoints 绘制轮廓 if (aiDotsResults.aiResultsList.isNotEmpty) { Path path = Path(); path.moveTo( aiDotsResults.aiResultsList[0].dx, aiDotsResults.aiResultsList[0].dy); for (int i = 1; i < aiDotsResults.aiResultsList.length; i++) { path.lineTo(aiDotsResults.aiResultsList[i].dx, aiDotsResults.aiResultsList[i].dy); } path.close(); canvas.drawPath( dashPath( path, dashArray: CircularIntervalList([1, 10]), ), isSelected ? aiPaintSelected : aiPaint, ); } // canvas.drawPoints( // ///PointMode的枚举类型有三个,points(点),lines(线,隔点连接),polygon(线,相邻连接) // PointMode.points, // aiDotsResults.aiResultsList, // isSelected ? aiPaintSelected : aiPaint, // ); } @override bool shouldRepaint(covariant PaintAIDots oldDelegate) { return oldDelegate.hashCode != hashCode; } }