show<T> method
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,
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);
}