drawAxisTick method
void
drawAxisTick(
- Canvas canvas,
- Paint paint
)
override
Implementation
@override
void drawAxisTick(Canvas canvas, Paint paint) {
List<String> ticks = obtainTicks();
if (ticks.isEmpty) {
return;
}
if (ticks.length == 1) {
dynamic firstData = scale.domainValue(axis.offsetAngle);
dynamic endData = scale.domainValue(axis.offsetAngle + axis.sweepAngle);
MainTick? tick;
if (axis.axisLine.tickFun != null) {
tick = axis.axisLine.tickFun!.call(DynamicData(firstData), DynamicData(endData), null);
}
tick ??= axis.axisLine.tick;
tick?.drawCircleTick(canvas, paint, props.radius, axis.offsetAngle, axis.sweepAngle, ticks);
return;
}
num allAngle = axis.sweepAngle.abs();
num angleInterval = allAngle / (ticks.length - 1);
for (int i = 0; i < ticks.length - 1; i++) {
num startAngle = axis.offsetAngle + angleInterval * i;
dynamic firstData = scale.domainValue(startAngle);
dynamic endData = scale.domainValue(startAngle + angleInterval);
MainTick? tick;
if (axis.axisLine.tickFun != null) {
tick = axis.axisLine.tickFun!.call(DynamicData(firstData), DynamicData(endData), null);
}
tick ??= axis.axisLine.tick;
List<String> tl = [];
tl.add(ticks[i]);
if (i < ticks.length - 2) {
tl.add('');
} else {
tl.add(ticks[i + 1]);
}
tick?.drawCircleTick(canvas, paint, props.radius, startAngle, angleInterval, tl, category: axis.category);
}
if (axis.subAxisStyle != null) {
int length = ticks.length;
num interval = axis.sweepAngle.abs() / length;
if (!axis.clockwise) {
interval *= -1;
}
int count = length;
if (axis.sweepAngle % 360 != 0 && axis.sweepAngle > 0) {
count += 1;
}
for (int i = 0; i < count; i++) {
num angle = axis.offsetAngle + i * interval;
Offset offset = circlePoint(props.radius, angle);
axis.subAxisStyle!.drawPolygon(canvas, paint, [Offset.zero, offset]);
}
}
}