getAdjustmentRadius method

BorderRadius? getAdjustmentRadius(
  1. Size size
)

Implementation

BorderRadius? getAdjustmentRadius(Size size) {
  final x = size.width;
  final y = size.height;
  final isSquire = x == y;
  if (isSquire && borderRadius != null && strokeAlign != StrokeAlign.center) {
    final i = strokeWidth / 2;
    final xi = x / 2;
    final yi = y / 2;

    final b = borderRadius!;
    final tl = b.topLeft;
    final tr = b.topRight;
    final br = b.bottomRight;
    final bl = b.bottomLeft;

    final radius = BorderRadius.only(
      topLeft: Radius.elliptical(
        tl.x >= xi ? i : 0,
        tl.y >= yi ? i : 0,
      ),
      topRight: Radius.elliptical(
        tr.x >= xi ? i : 0,
        tr.y >= yi ? i : 0,
      ),
      bottomLeft: Radius.elliptical(
        bl.x >= xi ? i : 0,
        bl.y >= yi ? i : 0,
      ),
      bottomRight: Radius.elliptical(
        br.x >= xi ? i : 0,
        br.y >= yi ? i : 0,
      ),
    );
    if (strokeAlign == StrokeAlign.inside) {
      return borderRadius! - radius;
    } else {
      return borderRadius! + radius;
    }
  } else {
    return borderRadius;
  }
}