draw method

  1. @override
void draw(
  1. Canvas canvas,
  2. SpoilerContext context
)
override

Implementation

@override
void draw(
  Canvas canvas,
  SpoilerContext context,
) {
  if (particles.isEmpty) return;

  final shape = shapePath;
  final shapeMetrics = _shapeMetrics;

  for (final particle in particles) {
    final visual = buildParticleVisual(
      particle,
      context,
      baseRadius: particle.size * 0.5,
    );
    if (visual == null) {
      continue;
    }

    _particlePaint.color = visual.color;
    final radius = particle.size * 0.5 * visual.scale;

    if (shape == null) {
      canvas.drawCircle(particle, radius, _particlePaint);
      continue;
    }
    if (shapeMetrics == null || !shapeMetrics.isDrawable) {
      continue;
    }

    drawFittedPath(
      canvas,
      shape,
      center: particle,
      targetDiameter: radius * 2.0,
      paint: _particlePaint,
      metrics: shapeMetrics,
    );
  }
}