safeInnerRect property Null safety

Rect safeInnerRect

The non-rounded rectangle that is constrained by the smaller of the two diagonals, with each diagonal traveling through the middle of the curve corners. The middle of a corner is the intersection of the curve with its respective quadrant bisector.

Implementation

Rect get safeInnerRect {
  const double kInsetFactor = 0.29289321881; // 1-cos(pi/4)

  final double leftRadius = math.max(blRadiusX, tlRadiusX);
  final double topRadius = math.max(tlRadiusY, trRadiusY);
  final double rightRadius = math.max(trRadiusX, brRadiusX);
  final double bottomRadius = math.max(brRadiusY, blRadiusY);

  return Rect.fromLTRB(
    left + leftRadius * kInsetFactor,
    top + topRadius * kInsetFactor,
    right - rightRadius * kInsetFactor,
    bottom - bottomRadius * kInsetFactor
  );
}