drawTicks method
void
drawTicks(
- BuildContext context,
- CanvasWrapper canvasWrapper,
- PaintHolder<
RadarChartData> holder
Implementation
@visibleForTesting
void drawTicks(
BuildContext context,
CanvasWrapper canvasWrapper,
PaintHolder<RadarChartData> holder,
) {
final data = holder.data;
final size = canvasWrapper.size;
final centerX = radarCenterX(size);
final centerY = radarCenterY(size);
final centerOffset = Offset(centerX, centerY);
/// controls Radar chart size
final radius = radarRadius(size);
_backgroundPaint.color = data.radarBackgroundColor;
_borderPaint
..color = data.radarBorderData.color
..strokeWidth = data.radarBorderData.width;
if (data.radarShape == RadarShape.circle) {
/// draw radar background
canvasWrapper
..drawCircle(centerOffset, radius, _backgroundPaint)
/// draw radar border
..drawCircle(centerOffset, radius, _borderPaint);
} else {
final path =
_generatePolygonPath(centerX, centerY, radius, data.titleCount);
/// draw radar background
canvasWrapper
..drawPath(path, _backgroundPaint)
/// draw radar border
..drawPath(path, _borderPaint);
}
final dataSetMaxValue = data.maxEntry.value;
final dataSetMinValue = data.minEntry.value;
final tickSpace = (dataSetMaxValue - dataSetMinValue) / data.tickCount;
final ticks = <double>[];
var tickValue = dataSetMinValue;
for (var i = 0; i <= data.tickCount; i++) {
ticks.add(tickValue);
tickValue += tickSpace;
}
final tickDistance = radius / (ticks.length);
_tickPaint
..color = data.tickBorderData.color
..strokeWidth = data.tickBorderData.width;
/// draw radar ticks
ticks.sublist(0, ticks.length - 1).asMap().forEach(
(index, tick) {
final tickRadius = tickDistance * (index + 1);
if (data.radarShape == RadarShape.circle) {
canvasWrapper.drawCircle(centerOffset, tickRadius, _tickPaint);
} else {
canvasWrapper.drawPath(
_generatePolygonPath(centerX, centerY, tickRadius, data.titleCount),
_tickPaint,
);
}
_ticksTextPaint
..text = TextSpan(
text: tick.toStringAsFixed(1),
style: Utils().getThemeAwareTextStyle(context, data.ticksTextStyle),
)
..textDirection = TextDirection.ltr
..layout(maxWidth: size.width);
canvasWrapper.drawText(
_ticksTextPaint,
Offset(centerX + 5, centerY - tickRadius - _ticksTextPaint.height),
);
},
);
}