render method

void render(
  1. CanvasRenderingContext2D ctx
)

Implementation

void render(CanvasRenderingContext2D ctx) {
  if (chart.data.length < 2 && chart.candleData.length < 2) {
    print('Not enough data to draw chart');
    return;
  }
  ctx
    ..strokeStyle = style.lineColor
    ..fillStyle = style.fontColor;
  if (timeStep == '') {
    Duration diff;
    if (chart.data.isNotEmpty) {
      diff = chart.data[1].date.difference(chart.data.first.date);
    } else {
      diff = chart.candleData[1].date.difference(chart.candleData.first.date);
    }
    xStepInterval = 40;
    if (diff.inSeconds < 60) {
      timeStep = '${diff.inSeconds}s';
    } else if (diff.inMinutes < 60) {
      timeStep = '${diff.inMinutes}m';
      xStepInterval = 40;
    } else if (diff.inHours < 24) {
      timeStep = '${diff.inHours}h';
      xStepInterval = 40;
    } else {
      timeStep = '${diff.inHours / 24}d';
      xStepInterval = 60;
    }
  }
  if (chart.candleData.isNotEmpty) {
    final maxValue = chart.candleData.map((e) => e.high).reduce(max);
    final minValue = chart.candleData.map((e) => e.low).reduce(min);
    renderXAxis(ctx, chart.candleData.map((e) => e.date).toList());
    renderYAxis(ctx, minValue, maxValue);
  } else {
    final maxValue = chart.data.map((e) => e.value).reduce(max);
    final minValue = chart.data.map((e) => e.value).reduce(min);
    renderXAxis(ctx, chart.data.map((e) => e.date).toList());
    renderYAxis(ctx, minValue, maxValue);
  }
}