render method
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);
}
}