paint method

  1. @override
void paint(
  1. Canvas canvas,
  2. Rect rect,
  3. {double? gapStart,
  4. double gapExtent = 0.0,
  5. double gapPercentage = 0.0,
  6. TextDirection? textDirection}
)
override

Draw a horizontal line at the bottom of rect.

The borderSide defines the line's color and weight. The textDirection gap and textDirection parameters are ignored.

Implementation

@override
void paint(
  Canvas canvas,
  Rect rect, {
  double? gapStart,
  double gapExtent = 0.0,
  double gapPercentage = 0.0,
  TextDirection? textDirection,
}) {
  if (borderRadius.bottomLeft != Radius.zero || borderRadius.bottomRight != Radius.zero) {
    // This prevents the border from leaking the color due to anti-aliasing rounding errors.
    final BorderRadius updatedBorderRadius = BorderRadius.only(
      bottomLeft: borderRadius.bottomLeft.clamp(maximum: Radius.circular(rect.height / 2)),
      bottomRight: borderRadius.bottomRight.clamp(maximum: Radius.circular(rect.height / 2)),
    );

    // We set the strokeAlign to center, so the behavior is consistent with
    // drawLine and with the historical behavior of this border.
    BoxBorder.paintNonUniformBorder(canvas, rect,
        textDirection: textDirection,
        borderRadius: updatedBorderRadius,
        bottom: borderSide.copyWith(strokeAlign: BorderSide.strokeAlignCenter),
        color: borderSide.color);
  } else {
    canvas.drawLine(rect.bottomLeft, rect.bottomRight, borderSide.toPaint());
  }
}