translateRectIntoBounds function

Rect translateRectIntoBounds(
  1. Size layout,
  2. Rect rect
)

Returns a translated Rect that fit layout size

Implementation

Rect translateRectIntoBounds(Size layout, Rect rect) {
  final double translateX = (rect.left < 0 ? rect.left.abs() : 0) +
      (rect.right > layout.width ? layout.width - rect.right : 0);
  final double translateY = (rect.top < 0 ? rect.top.abs() : 0) +
      (rect.bottom > layout.height ? layout.height - rect.bottom : 0);

  if (translateX != 0 || translateY != 0) {
    return rect.translate(translateX, translateY);
  }

  return rect;
}