draw method

  1. @override
void draw(
  1. Canvas canvas,
  2. Size size,
  3. double scaleX,
  4. double scrollX,
  5. double getX(
    1. double
    ),
  6. double getY(
    1. double
    ),
)
override

Implementation

@override
void draw(Canvas canvas, Size size, double scaleX, double scrollX,
    double Function(double) getX, double Function(double) getY) {
  if (startPoint == null || endPoint == null) return;

  final paint = Paint()
    ..color = color
    ..strokeWidth = strokeWidth
    ..style = PaintingStyle.stroke;

  // 绘制箭头主体
  canvas.drawLine(startPoint!, endPoint!, paint);

  // 计算箭头头部
  final direction = (endPoint! - startPoint!).direction;
  final arrowHead1 =
      endPoint! + Offset.fromDirection(direction + 2.5, arrowHeadSize);
  final arrowHead2 =
      endPoint! + Offset.fromDirection(direction - 2.5, arrowHeadSize);

  // 绘制箭头头部
  canvas.drawLine(endPoint!, arrowHead1, paint);
  canvas.drawLine(endPoint!, arrowHead2, paint);
}