showPopover<T> function

OverlayCompleter<T?> showPopover<T>({
  1. required BuildContext context,
  2. required AlignmentGeometry alignment,
  3. required WidgetBuilder builder,
  4. Offset? position,
  5. AlignmentGeometry? anchorAlignment,
  6. PopoverConstraint widthConstraint = PopoverConstraint.flexible,
  7. PopoverConstraint heightConstraint = PopoverConstraint.flexible,
  8. Key? key,
  9. bool rootOverlay = true,
  10. bool modal = true,
  11. bool barrierDismissable = true,
  12. Clip clipBehavior = Clip.none,
  13. Object? regionGroupId,
  14. Offset? offset,
  15. AlignmentGeometry? transitionAlignment,
  16. EdgeInsetsGeometry? margin,
  17. bool follow = true,
  18. bool consumeOutsideTaps = true,
  19. ValueChanged<PopoverOverlayWidgetState>? onTickFollow,
  20. bool allowInvertHorizontal = true,
  21. bool allowInvertVertical = true,
  22. bool dismissBackdropFocus = true,
  23. Duration? showDuration,
  24. Duration? dismissDuration,
  25. OverlayBarrier? overlayBarrier,
  26. OverlayHandler? handler,
})

Displays a popover overlay with specified alignment and behavior.

Parameters:

  • context (BuildContext, required): Widget context.
  • alignment (AlignmentGeometry, required): Popover alignment relative to anchor.
  • builder (WidgetBuilder, required): Builds popover content.
  • position (Offset?, optional): Explicit position.
  • anchorAlignment (AlignmentGeometry?, optional): Anchor alignment point.
  • widthConstraint (PopoverConstraint, optional): Width constraint mode. Default: flexible.
  • heightConstraint (PopoverConstraint, optional): Height constraint mode. Default: flexible.
  • key (Key?, optional): Widget key.
  • rootOverlay (bool, optional): Use root overlay. Default: true.
  • modal (bool, optional): Modal behavior. Default: true.
  • barrierDismissable (bool, optional): Tap outside to dismiss. Default: true.
  • clipBehavior (Clip, optional): Clipping behavior. Default: Clip.none.
  • regionGroupId (Object?, optional): Region grouping identifier.
  • offset (Offset?, optional): Additional offset.
  • transitionAlignment (AlignmentGeometry?, optional): Transition origin.
  • margin (EdgeInsetsGeometry?, optional): Popover margin.
  • follow (bool, optional): Follow anchor movement. Default: true.
  • consumeOutsideTaps (bool, optional): Consume outside taps. Default: true.
  • onTickFollow (ValueChanged<PopoverOverlayWidgetState>?, optional): Follow callback.
  • allowInvertHorizontal (bool, optional): Allow horizontal inversion. Default: true.
  • allowInvertVertical (bool, optional): Allow vertical inversion. Default: true.
  • dismissBackdropFocus (bool, optional): Dismiss on backdrop focus. Default: true.
  • showDuration (Duration?, optional): Show animation duration.
  • dismissDuration (Duration?, optional): Dismiss animation duration.
  • overlayBarrier (OverlayBarrier?, optional): Custom barrier configuration.
  • handler (OverlayHandler?, optional): Custom overlay handler.

Returns: OverlayCompleter<T?> — handle to control the popover.

Example:

showPopover(
  context: context,
  alignment: Alignment.bottomCenter,
  builder: (context) => Text('Popover content'),
);

Implementation

OverlayCompleter<T?> showPopover<T>({
  required BuildContext context,
  required AlignmentGeometry alignment,
  required WidgetBuilder builder,
  Offset? position,
  AlignmentGeometry? anchorAlignment,
  PopoverConstraint widthConstraint = PopoverConstraint.flexible,
  PopoverConstraint heightConstraint = PopoverConstraint.flexible,
  Key? key,
  bool rootOverlay = true,
  bool modal = true,
  bool barrierDismissable = true,
  Clip clipBehavior = Clip.none,
  Object? regionGroupId,
  Offset? offset,
  AlignmentGeometry? transitionAlignment,
  EdgeInsetsGeometry? margin,
  bool follow = true,
  bool consumeOutsideTaps = true,
  ValueChanged<PopoverOverlayWidgetState>? onTickFollow,
  bool allowInvertHorizontal = true,
  bool allowInvertVertical = true,
  bool dismissBackdropFocus = true,
  Duration? showDuration,
  Duration? dismissDuration,
  OverlayBarrier? overlayBarrier,
  OverlayHandler? handler,
}) {
  handler ??= OverlayManager.of(context);
  return handler.show<T>(
    context: context,
    alignment: alignment,
    builder: builder,
    position: position,
    anchorAlignment: anchorAlignment,
    widthConstraint: widthConstraint,
    heightConstraint: heightConstraint,
    key: key,
    rootOverlay: rootOverlay,
    modal: modal,
    barrierDismissable: barrierDismissable,
    clipBehavior: clipBehavior,
    regionGroupId: regionGroupId,
    offset: offset,
    transitionAlignment: transitionAlignment,
    margin: margin,
    follow: follow,
    consumeOutsideTaps: consumeOutsideTaps,
    onTickFollow: onTickFollow,
    allowInvertHorizontal: allowInvertHorizontal,
    allowInvertVertical: allowInvertVertical,
    dismissBackdropFocus: dismissBackdropFocus,
    showDuration: showDuration,
    dismissDuration: dismissDuration,
    overlayBarrier: overlayBarrier,
  );
}