resolveMenuConstraints method

BoxConstraints resolveMenuConstraints({
  1. required Rect anchorRect,
  2. required Size overlaySize,
  3. required EdgeInsets mediaPadding,
})

Resolves popup menu constraints for the current anchor and viewport.

Width is always constrained by minWidth and maxWidth. Height is additionally constrained when there is vertical room on the chosen side.

Implementation

BoxConstraints resolveMenuConstraints({
  required Rect anchorRect,
  required Size overlaySize,
  required EdgeInsets mediaPadding,
}) {
  final availableHeight = _availableHeight(
    anchorRect: anchorRect,
    overlaySize: overlaySize,
    mediaPadding: mediaPadding,
    placement: resolvePlacement(
      anchorRect: anchorRect,
      overlaySize: overlaySize,
      mediaPadding: mediaPadding,
    ),
  );

  if (availableHeight <= 0) {
    return BoxConstraints(
      minWidth: minWidth,
      maxWidth: maxWidth,
    );
  }

  return BoxConstraints(
    minWidth: minWidth,
    maxWidth: maxWidth,
    maxHeight: availableHeight,
  );
}