drawDashedLine method
Implementation
void drawDashedLine(
Canvas canvas,
Offset point1,
Offset point2,
Paint linePaint,
) {
final patternArray = dashPattern!;
final deltaX = point2.dx - point1.dx;
final deltaY = point2.dy - point1.dy;
final totalDistance = Offset(deltaX, deltaY).distance;
final unitVectorX = deltaX / totalDistance;
final unitVectorY = deltaY / totalDistance;
double accumulatedDistance = 0;
int patternIndex = 0;
bool isDrawingSegment = true;
while (accumulatedDistance < totalDistance) {
final currentSegmentLength =
patternArray[patternIndex % patternArray.length];
final endDistance = (accumulatedDistance + currentSegmentLength).clamp(
0,
totalDistance,
);
final segmentStart = Offset(
point1.dx + unitVectorX * accumulatedDistance,
point1.dy + unitVectorY * accumulatedDistance,
);
final segmentEnd = Offset(
point1.dx + unitVectorX * endDistance,
point1.dy + unitVectorY * endDistance,
);
if (isDrawingSegment)
canvas.drawLine(segmentStart, segmentEnd, linePaint);
accumulatedDistance += currentSegmentLength;
patternIndex++;
isDrawingSegment = !isDrawingSegment;
}
}