draw method

  1. @override
void draw(
  1. Canvas canvas,
  2. Size size,
  3. ChartContext context
)
override

Implementation

@override
void draw(Canvas canvas, Size size, ChartContext context) {
  final anim = context.animationValue;
  final art = SeriesPaint(context.config.style);
  final sizeRange = _globalSizeRange(context.config.series);

  for (var s = 0; s < context.config.series.length; s++) {
    final series = context.config.series[s];
    final color = series.style.color ?? context.theme.seriesColor(s);

    for (final point in series.points) {
      final y =
          context.viewport.minY + (point.y - context.viewport.minY) * anim;
      final offset = context.transformer.dataToCanvas(point.x, y);
      final radius = _radiusFor(point, sizeRange);
      final rect = Rect.fromCircle(center: offset, radius: radius);
      canvas.drawCircle(
        offset,
        radius,
        art.blobFill(
          rect,
          color,
          opacity: (series.style.opacity * 0.9).clamp(0.0, 1.0),
        ),
      );

      if (series.style.strokeWidth > 0) {
        canvas.drawCircle(
          offset,
          radius,
          context.paintCache.get(
            key: 'bubble-stroke-$s',
            color: SeriesPaint.lighten(color, 0.1).withValues(alpha: 0.5),
            strokeWidth: series.style.strokeWidth,
          ),
        );
      }
    }
  }
}