show method
- required BuildContext context,
- required WidgetBuilder contextMenuBuilder,
- Widget? debugRequiredFor,
Shows the given context menu.
Since there can only be one shown context menu at a time, calling this will also remove any other context menu that is visible.
Implementation
void show({
required BuildContext context,
required WidgetBuilder contextMenuBuilder,
Widget? debugRequiredFor,
}) {
if (isShown) {
// Update the currently-shown menu in-place by swapping the builder
// and captured themes and rebuilding the existing overlay entry.
_contextMenuBuilder = contextMenuBuilder;
_menuOverlayEntry?.markNeedsBuild();
return;
}
removeAny();
final OverlayState overlayState = Overlay.of(
context,
rootOverlay: true,
debugRequiredFor: debugRequiredFor,
);
_contextMenuBuilder = contextMenuBuilder;
_menuOverlayEntry = OverlayEntry(
builder: (BuildContext context) {
final CapturedThemes capturedThemes = InheritedTheme.capture(
from: context,
to: Navigator.maybeOf(context)?.context,
);
return capturedThemes.wrap(_contextMenuBuilder!(context));
},
);
_shownInstance = this;
overlayState.insert(_menuOverlayEntry!);
}