showGlassContextMenu<T> function
Future<T?>
showGlassContextMenu<T>({
- required BuildContext context,
- required Rect targetRect,
- required List<
Widget> actions, - WidgetBuilder? previewBuilder,
- Widget? previewChild,
- double borderRadius = 32.0,
- double? previewBorderRadius,
- double rowBorderRadius = 16.0,
- BorderRadius? rowCorners,
- Color? originSlotColor,
- Color? backgroundColor,
- LiquidGlassSettings? settings,
- GlassQuality? quality,
- double backdropBlur = 0.0,
- Color? barrierColor,
- bool enableHaptics = true,
- GlobalKey<
State< ? routeStaticKey,StatefulWidget> > - bool isInteractive = false,
- Duration commitDuration = const Duration(milliseconds: 520),
Displays an iOS-style liquid glass context menu attached to a target rectangle.
Returns a Future that resolves when the context menu is dismissed.
Implementation
Future<T?> showGlassContextMenu<T>({
required BuildContext context,
required Rect targetRect,
required List<Widget> actions,
WidgetBuilder? previewBuilder,
Widget? previewChild,
double borderRadius = 32.0,
double? previewBorderRadius,
double rowBorderRadius = 16.0,
BorderRadius? rowCorners,
Color? originSlotColor,
Color? backgroundColor,
LiquidGlassSettings? settings,
GlassQuality? quality,
double backdropBlur = 0.0,
Color? barrierColor,
double menuWidth = 250.0,
bool enableHaptics = true,
GlobalKey? routeStaticKey,
bool isInteractive = false,
Duration commitDuration = const Duration(milliseconds: 520),
}) {
assert(actions.isNotEmpty, 'Context menu actions must not be empty.');
final capturedGlassTheme = GlassTheme.maybeOf(context)?.data;
final capturedCupertinoTheme = CupertinoTheme.of(context);
return Navigator.of(context, rootNavigator: true).push<T>(
_GlassContextMenuRoute<T>(
targetRect: targetRect,
actions: actions,
previewBuilder: previewBuilder,
previewChild: previewChild,
borderRadius: borderRadius,
previewBorderRadius: previewBorderRadius,
rowBorderRadius: rowBorderRadius,
rowCorners: rowCorners,
originSlotColor: originSlotColor,
backgroundColor: backgroundColor,
glassSettings: settings,
quality: quality,
backdropBlur: backdropBlur,
scrimColor: barrierColor,
menuWidth: menuWidth,
enableHaptics: enableHaptics,
routeStaticKey: routeStaticKey,
isInteractive: isInteractive,
commitDuration: commitDuration,
capturedGlassTheme: capturedGlassTheme,
capturedCupertinoTheme: capturedCupertinoTheme,
),
);
}