onPaint method

  1. @override
void onPaint(
  1. Canvas canvas,
  2. Size size
)
override

Implementation

@override
void onPaint(Canvas canvas, Size size) {
  if (_backgroundPaint != null) {
    canvas.drawRect(
        Rect.fromLTRB(0, 0, size.width, size.height), _backgroundPaint!);
  }

  // execute all drawing commands
  drawGridBackground(canvas);

  compute();

  _xAxisRenderer?.renderAxisLine(canvas);
  _axisRendererLeft?.renderAxisLine(canvas);
  _axisRendererRight?.renderAxisLine(canvas);

  if (xAxis!.drawGridLinesBehindData) _xAxisRenderer?.renderGridLines(canvas);

  if (_axisLeft!.drawGridLinesBehindData) {
    _axisRendererLeft?.renderGridLines(canvas);
  }

  if (_axisRight!.drawGridLinesBehindData) {
    _axisRendererRight?.renderGridLines(canvas);
  }

  if (xAxis!.enabled && xAxis!.drawLimitLineBehindData) {
    _xAxisRenderer?.renderLimitLines(canvas);
  }

  if (_axisLeft!.enabled && _axisLeft!.drawLimitLineBehindData) {
    _axisRendererLeft?.renderLimitLines(canvas);
  }

  if (_axisRight!.enabled && _axisRight!.drawLimitLineBehindData) {
    _axisRendererRight?.renderLimitLines(canvas);
  }

  // make sure the data cannot be drawn outside the content-rect
  canvas.save();
  canvas.clipRect(viewPortHandler!.getContentRect());

  renderer?.drawData(canvas);

  if (!xAxis!.drawGridLinesBehindData) {
    _xAxisRenderer?.renderGridLines(canvas);
  }

  if (!_axisLeft!.drawGridLinesBehindData) {
    _axisRendererLeft?.renderGridLines(canvas);
  }

  if (!_axisRight!.drawGridLinesBehindData) {
    _axisRendererRight?.renderGridLines(canvas);
  }

  // if highlighting is enabled
  if (valuesToHighlight()) {
    renderer?.drawHighlighted(canvas, indicesToHighlight);
  }

  // Removes clipping rectangle
  canvas.restore();

  renderer?.drawExtras(canvas);

  if (xAxis!.enabled && !xAxis!.drawLimitLineBehindData) {
    _xAxisRenderer?.renderLimitLines(canvas);
  }

  if (_axisLeft!.enabled && !_axisLeft!.drawLimitLineBehindData) {
    _axisRendererLeft?.renderLimitLines(canvas);
  }

  if (_axisRight!.enabled && !_axisRight!.drawLimitLineBehindData) {
    _axisRendererRight?.renderLimitLines(canvas);
  }

  _xAxisRenderer?.renderAxisLabels(canvas);
  _axisRendererLeft?.renderAxisLabels(canvas);
  _axisRendererRight?.renderAxisLabels(canvas);

  if (_clipValuesToContent) {
    canvas.save();
    canvas.clipRect(viewPortHandler!.getContentRect());

    renderer!.drawValues(canvas);

    canvas.restore();
  } else {
    renderer!.drawValues(canvas);
  }

  legendRenderer!.renderLegend(canvas);

  drawDescription(canvas, size);

  drawMarkers(canvas);
}