axisTop function
void
axisTop(})
Implementation
void axisTop(
Canvas canvas, {
required Scale xScale,
required Offset position,
required AxisTheme theme,
bool showAxis = true,
Function(dynamic)? formatLabel,
}) {
if (showAxis) {
// Long Axis
canvas.drawLine(position + Offset(xScale.apply(xScale.dMin), 0),
position + Offset(xScale.apply(xScale.dMax), 0), theme.axisLine);
// Strt and End Marks
canvas.drawLine(position + Offset(xScale.apply(xScale.dMin), 0),
position + Offset(xScale.apply(xScale.dMin), -10), theme.tickLine);
canvas.drawLine(position + Offset(xScale.apply(xScale.dMax), 0),
position + Offset(xScale.apply(xScale.dMax), -10), theme.tickLine);
}
final days = xScale.getRange(7);
// Day marks
for (int i = 0; i < days.length; i++) {
var day = days[i];
final dayWidth = (i == days.length - 1
? xScale.apply(xScale.dMax as DateTime)
: xScale.apply(days[i + 1])) -
xScale.apply(day);
if (showAxis) {
canvas.drawLine(position + Offset(xScale.apply(day), 0),
position + Offset(xScale.apply(day), -10), theme.tickLine);
}
final mid = xScale.apply(day) + dayWidth / 2;
final c = position + Offset(mid, -16);
drawText(
canvas,
mid: c,
text: formatLabel?.call(day) ?? day.toString(),
style: theme.labelStyle,
maxWidth: dayWidth,
);
}
}