paint method
void
paint(
- Canvas canvas,
- ValueInCanvasProvider xInCanvasProvider,
- ValueInCanvasProvider yInCanvasProvider,
- CandlestickSpot spot,
- int spotIndex,
override
This method should be overridden to draw the candlestick shape
Implementation
@override
void paint(
Canvas canvas,
ValueInCanvasProvider xInCanvasProvider,
ValueInCanvasProvider yInCanvasProvider,
CandlestickSpot spot,
int spotIndex,
) {
final style = candlestickStyleProvider(spot, spotIndex);
final xOffsetInCanvas = xInCanvasProvider(spot.x);
final openYOffsetInCanvas = yInCanvasProvider(spot.open);
final highYOffsetInCanvas = yInCanvasProvider(spot.high);
final lowOYOffsetInCanvas = yInCanvasProvider(spot.low);
final closeYOffsetInCanvas = yInCanvasProvider(spot.close);
final bodyHighCanvas = min(openYOffsetInCanvas, closeYOffsetInCanvas);
final bodyLowCanvas = max(openYOffsetInCanvas, closeYOffsetInCanvas);
if (style.lineWidth > 0 && style.lineColor.a > 0) {
canvas
// Bottom line
..drawLine(
Offset(xOffsetInCanvas, lowOYOffsetInCanvas),
Offset(xOffsetInCanvas, bodyLowCanvas),
_linePainter
..color = style.lineColor
..strokeWidth = style.lineWidth,
)
// Top line
..drawLine(
Offset(xOffsetInCanvas, highYOffsetInCanvas),
Offset(xOffsetInCanvas, bodyHighCanvas),
_linePainter
..color = style.lineColor
..strokeWidth = style.lineWidth,
);
}
// Body
final bodyRect = Rect.fromLTRB(
xOffsetInCanvas - style.bodyWidth / 2,
bodyHighCanvas,
xOffsetInCanvas + style.bodyWidth / 2,
bodyLowCanvas,
);
if (style.bodyFillColor.a > 0 && style.bodyWidth > 0) {
canvas.drawRRect(
RRect.fromRectAndRadius(
bodyRect,
Radius.circular(style.bodyRadius),
),
_bodyPainter
..color = style.bodyFillColor
..style = PaintingStyle.fill,
);
}
if (style.bodyStrokeWidth > 0 && style.bodyStrokeColor.a > 0) {
canvas.drawRRect(
RRect.fromRectAndRadius(
bodyRect,
Radius.circular(style.bodyRadius),
),
_bodyStrokePainter
..color = style.bodyStrokeColor
..strokeWidth = style.bodyStrokeWidth
..style = PaintingStyle.stroke,
);
}
}