draw method
Implementation
@override
void draw(Canvas canvas, Size size, ChartContext context) {
final bezier = BezierPathBuilder(tension: context.config.curveTension);
final anim = context.animationValue;
for (var s = 0; s < context.config.series.length; s++) {
final series = context.config.series[s];
if (series.points.isEmpty) continue;
final color = series.style.color ?? context.theme.seriesColor(s);
final points = _animatedPoints(series.points, anim, context);
final path = bezier.buildFromPoints(
points,
context.transformer,
smooth: mode == LineChartMode.smooth,
);
if (fillArea && points.isNotEmpty) {
final fillPath = Path.from(path);
final first = context.transformer.dataToCanvas(
points.first.x,
points.first.y,
);
final last = context.transformer.dataToCanvas(
points.last.x,
points.last.y,
);
fillPath
..lineTo(last.dx, context.bounds.bottom)
..lineTo(first.dx, context.bounds.bottom)
..close();
canvas.drawPath(
fillPath,
context.paintCache.fill(
'line-fill-$s',
(series.style.fillColor ?? color).withValues(alpha: 0.2),
),
);
}
canvas.drawPath(
path,
context.paintCache.get(
key: 'line-$s',
color: color.withValues(alpha: series.style.opacity),
strokeWidth: series.style.strokeWidth,
),
);
if (series.style.showMarkers) {
_drawMarkers(canvas, context, points, series, color, s);
}
_drawHover(canvas, context, series, points, color);
}
}