drawAxisLine method

  1. @override
void drawAxisLine(
  1. Canvas canvas,
  2. Paint paint
)
override

Implementation

@override
void drawAxisLine(Canvas canvas, Paint paint) {
  List<num> viewPortList = viewRange; //distance
  num first = viewPortList[0];
  num end = viewPortList[1];
  num allDistance = (scale.range[0] - scale.range[1]).abs();
  num viewInterval = scale.viewInterval;
  while (first < end) {
    num pre = first;
    num next = first + viewInterval;
    first = next;
    Offset startOffset, endOffset;
    double percent = pre / allDistance;
    startOffset = Offset(
      props.start.dx + (props.end.dx - props.start.dx) * percent,
      props.start.dy + (props.end.dy - props.start.dy) * percent,
    );
    startOffset = startOffset.translate(-scrollValue, -scrollValue);
    percent = (next) / allDistance;
    endOffset = Offset(
      props.start.dx + (props.end.dx - props.start.dx) * percent,
      props.start.dy + (props.end.dy - props.start.dy) * percent,
    );
    endOffset = endOffset.translate(-scrollValue, -scrollValue);

    dynamic firstData = scale.domainValue(pre);
    dynamic endData = scale.domainValue(next);

    LineStyle? style;
    if (axis.axisLine.styleFun != null) {
      style = axis.axisLine.styleFun!.call(DynamicData(firstData), DynamicData(endData), null);
    }
    style ??= axis.axisLine.style;
    style.drawPolygon(canvas, paint, [startOffset, endOffset]);
  }
}