showGlassContextMenu<T> function

Future<T?> showGlassContextMenu<T>({
  1. required BuildContext context,
  2. required Rect targetRect,
  3. required List<Widget> actions,
  4. WidgetBuilder? previewBuilder,
  5. Widget? previewChild,
  6. double borderRadius = 32.0,
  7. double? previewBorderRadius,
  8. double rowBorderRadius = 16.0,
  9. BorderRadius? rowCorners,
  10. Color? originSlotColor,
  11. Color? backgroundColor,
  12. LiquidGlassSettings? settings,
  13. GlassQuality? quality,
  14. double backdropBlur = 0.0,
  15. Color? barrierColor,
  16. double menuWidth = 250.0,
  17. bool enableHaptics = true,
  18. GlobalKey<State<StatefulWidget>>? routeStaticKey,
  19. bool isInteractive = false,
  20. 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,
    ),
  );
}