open method

void open({
  1. bool barrierDismissible = true,
  2. bool dismissWithEsc = true,
  3. bool dismissOnPointerMoveAway = false,
})

Opens the dropdown flyout

If barrierDismissible is true, tapping outside of the flyout will close it.

When dismissWithEsc is true, the flyout can be dismissed by pressing the ESC key.

If dismissOnPointerMoveAway is enabled, the flyout is dismissed when the cursor moves away from either the target or the flyout. It's disabled by default.

See also:

Implementation

void open({
  bool barrierDismissible = true,
  bool dismissWithEsc = true,
  bool dismissOnPointerMoveAway = false,
}) async {
  if (_flyoutController.isOpen) return;

  widget.onOpen?.call();
  await _flyoutController.showFlyout(
    barrierColor: Colors.transparent,
    placementMode: FlyoutPlacementMode.auto,
    autoModeConfiguration: FlyoutAutoConfiguration(
      preferredMode: widget.placement,
    ),
    additionalOffset: widget.verticalOffset,
    barrierDismissible: barrierDismissible,
    dismissOnPointerMoveAway: dismissOnPointerMoveAway,
    dismissWithEsc: dismissWithEsc,
    transitionBuilder: widget.transitionBuilder,
    builder: (context) {
      return MenuFlyout(
        color: widget.menuColor,
        shape: widget.menuShape,
        items:
            widget.items.map((item) => transformItem(item, context)).toList(),
      );
    },
  );
  widget.onClose?.call();
}