drawArrowHead method
Implementation
void drawArrowHead(
Canvas canvas,
Offset point1,
Offset point2,
Paint linePaint,
) {
final deltaX = point2.dx - point1.dx;
final deltaY = point2.dy - point1.dy;
final totalDistance = Offset(deltaX, deltaY).distance;
if (totalDistance == 0) return;
final unitVectorX = deltaX / totalDistance;
final unitVectorY = deltaY / totalDistance;
final rotationAngle = 0.4;
final arrowPaint = Paint()
..color = linePaint.color
..style = PaintingStyle.fill;
final arrowWing1 = Offset(
point2.dx -
arrowSize *
(unitVectorX * calculateCos(rotationAngle) +
unitVectorY * calculateSin(rotationAngle)),
point2.dy -
arrowSize *
(unitVectorY * calculateCos(rotationAngle) -
unitVectorX * calculateSin(rotationAngle)),
);
final arrowWing2 = Offset(
point2.dx -
arrowSize *
(unitVectorX * calculateCos(rotationAngle) -
unitVectorY * calculateSin(rotationAngle)),
point2.dy -
arrowSize *
(unitVectorY * calculateCos(rotationAngle) +
unitVectorX * calculateSin(rotationAngle)),
);
final arrowPath = Path()
..moveTo(point2.dx, point2.dy)
..lineTo(arrowWing1.dx, arrowWing1.dy)
..lineTo(arrowWing2.dx, arrowWing2.dy)
..close();
canvas.drawPath(arrowPath, arrowPaint);
}