paint method

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

Draw charts.

Implementation

@override
void paint(Canvas canvas, Size size) {
  final ChartTouchCallbackData? currentTouchedData = touchedData;
  _calculate(size);
  ChartAxisValue xValue = const ChartAxisValue.empty();
  ChartAxisValue yValue = const ChartAxisValue.empty();
  final ChartLayer? axisLayer =
      layers.firstWhereOrNull((element) => element is ChartAxisLayer);
  final List<TouchableShape<ChartDataItem>> touchableShapes = [];
  if (axisLayer is ChartAxisLayer) {
    xValue = ChartAxisValue(
      max: axisLayer.x.max,
      min: axisLayer.x.min,
    );
    yValue = ChartAxisValue(
      max: axisLayer.y.max,
      min: axisLayer.y.min,
    );
  }
  for (int i = 0; i < layers.length; i++) {
    final ChartLayer layer = layers[i];
    final ChartLayer? oldLayer = oldLayers?.getOrNull(i);
    if (layer is ChartGridLayer) {
      _ChartGridPainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartGridLayer ? oldLayer : null,
        painterData: _sheetPainterData,
      );
    } else if (layer is ChartAxisLayer) {
      _ChartAxisPainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartAxisLayer ? oldLayer : null,
        painterDataAxisX: _axisXPainterData,
        painterDataAxisY: _axisYPainterData,
      );
    } else if (layer is ChartBarLayer) {
      _ChartBarPainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartBarLayer ? oldLayer : null,
        painterData: _sheetPainterData,
        touchableShapes: touchableShapes,
        xValue: xValue,
        yValue: yValue,
      );
    } else if (layer is ChartLineLayer) {
      _ChartLinePainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartLineLayer ? oldLayer : null,
        painterData: _sheetPainterData,
        touchableShapes: touchableShapes,
        xValue: xValue,
        yValue: yValue,
      );
    } else if (layer is ChartGroupBarLayer) {
      _ChartGroupBarPainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartGroupBarLayer ? oldLayer : null,
        painterData: _sheetPainterData,
        touchableShapes: touchableShapes,
        xValue: xValue,
        yValue: yValue,
      );
    } else if (layer is ChartGroupPieLayer) {
      _ChartGroupPiePainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartGroupPieLayer ? oldLayer : null,
        painterData: _sheetPainterData,
        touchableShapes: touchableShapes,
      );
    } else if (layer is ChartCandleLayer) {
      _ChartCandlePainter.draw(
        canvas: canvas,
        controller: controller,
        layer: layer,
        oldLayer: oldLayer is ChartCandleLayer ? oldLayer : null,
        painterData: _sheetPainterData,
        xValue: xValue,
        yValue: yValue,
      );
    } else if (layer is ChartTooltipLayer && currentTouchedData != null) {
      _ChartTooltipPainter.draw(
        canvas: canvas,
        layer: layer,
        painterData: _sheetPainterData,
        tolerance: _sheetPainterData.position.dx -
            (_axisYPainterData.position.dx + _axisYPainterData.size.width),
        touchedData: currentTouchedData,
      );
    } else if (layer is ChartHighlightLayer && currentTouchedData != null) {
      _ChartHighlightPainter.draw(
        canvas: canvas,
        layer: layer,
        painterData: _sheetPainterData,
        tolerance: _sheetPainterData.position.dx -
            (_axisYPainterData.position.dx + _axisYPainterData.size.width),
        touchedData: currentTouchedData,
      );
    }
  }
  onUpdateTouchableShapes?.call(touchableShapes);
}