paint method

void paint(
  1. Canvas canvas,
  2. Path path,
  3. Paint paint
)

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);
  });
}