axisBottom function

void axisBottom(
  1. Canvas canvas, {
  2. required Scale xScale,
  3. required Offset position,
  4. required AxisTheme theme,
  5. dynamic formatLabel(
    1. dynamic
    )?,
})

Implementation

void axisBottom(
  Canvas canvas, {
  required Scale xScale,
  required Offset position,
  required AxisTheme theme,
  Function(dynamic)? formatLabel,
}) {
  // 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);
    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,
    );
  }
}