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 radius = context.config.barBorderRadius;
  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);
    final rowTop = context.bounds.top + s * rowHeight;

    for (final point in series.points) {
      final start = (point.metadata['start'] as num?)?.toDouble() ?? point.x;
      final end = (point.metadata['end'] as num?)?.toDouble() ?? point.y;

      final x1 = context.transformer.dataToCanvasX(start);
      final x2 = context.transformer.dataToCanvasX(end);
      final rect = Rect.fromLTRB(x1, rowTop + 4, x2, rowTop + rowHeight - 4);

      drawRoundedBar(
        canvas,
        rect,
        radius: radius,
        paint: context.paintCache.fill('timeline-$s', color),
      );

      if (point.label != null) {
        final builder = ParagraphBuilder(ParagraphStyle(fontSize: 10))
          ..pushStyle(context.theme.axisTextStyle.getTextStyle())
          ..addText(point.label!);
        final paragraph = builder.build()
          ..layout(ParagraphConstraints(width: rect.width));
        canvas.drawParagraph(paragraph, Offset(rect.left + 4, rect.top + 4));
      }
    }
  }
}