paint method
Implementation
void paint(Canvas canvas, Path path, Paint paint) {
final PathMetrics pms = path.computeMetrics();
final double pointLineLength = pointWidth ?? paint.strokeWidth;
final double partLength =
step + span * (pointCount + 1) + pointCount * pointLineLength;
pms.forEach((PathMetric pm) {
final int count = pm.length ~/ partLength;
for (int i = 0; i < count; i++) {
canvas.drawPath(
pm.extractPath(partLength * i, partLength * i + step),
paint,
);
for (int j = 1; j <= pointCount; j++) {
final start =
partLength * i + step + span * j + pointLineLength * (j - 1);
canvas.drawPath(
pm.extractPath(start, start + pointLineLength),
paint,
);
}
}
final double tail = pm.length % partLength;
canvas.drawPath(pm.extractPath(pm.length - tail, pm.length), paint);
});
}