show<T> method

  1. @override
OverlayCompleter<T> show<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. LayerLink? layerLink,
})
override

Implementation

@override
OverlayCompleter<T> show<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,
  LayerLink? layerLink,
}) {
  var navigatorState = Navigator.of(
    context,
    rootNavigator: rootOverlay,
  );
  final CapturedThemes themes =
      InheritedTheme.capture(from: context, to: navigatorState.context);
  final CapturedData data =
      Data.capture(from: context, to: navigatorState.context);
  var dialogRoute = DialogRoute<T>(
    context: context,
    fullScreen: true,
    builder: (context) {
      final theme = Theme.of(context);
      final surfaceOpacity = theme.surfaceOpacity;
      var child = _DialogOverlayWrapper(
        route: ModalRoute.of(context) as DialogRoute<T>,
        child: Builder(builder: (context) {
          return builder(context);
        }),
      );
      if (overlayBarrier != null) {
        return MultiModel(
          data: const [
            Model(#shadcn_flutter_dialog_overlay, true),
          ],
          child: ModalBackdrop(
            modal: modal,
            surfaceClip: ModalBackdrop.shouldClipSurface(surfaceOpacity),
            borderRadius: overlayBarrier.borderRadius,
            padding: overlayBarrier.padding,
            barrierColor: overlayBarrier.barrierColor ??
                const Color.fromRGBO(0, 0, 0, 0.8),
            child: child,
          ),
        );
      }
      return MultiModel(
        data: const [
          Model(#shadcn_flutter_dialog_overlay, true),
        ],
        child: child,
      );
    },
    themes: themes,
    barrierDismissible: barrierDismissable,
    barrierColor: overlayBarrier == null
        ? const Color.fromRGBO(0, 0, 0, 0.8)
        : Colors.transparent,
    barrierLabel: 'Dismiss',
    useSafeArea: true,
    data: data,
    traversalEdgeBehavior: TraversalEdgeBehavior.closedLoop,
    transitionBuilder: (context, animation, secondaryAnimation, child) {
      return _buildShadcnDialogTransitions(
        context,
        BorderRadius.zero,
        Alignment.center,
        animation,
        secondaryAnimation,
        true,
        child,
      );
    },
    alignment: Alignment.center,
  );
  navigatorState.push(
    dialogRoute,
  );
  return DialogOverlayCompleter(dialogRoute);
}