showGlassActionSheet<T> function

Future<T?> showGlassActionSheet<T>({
  1. required BuildContext context,
  2. String? title,
  3. String? message,
  4. required List<GlassActionSheetAction> actions,
  5. String cancelLabel = 'Cancel',
  6. bool showCancelButton = true,
  7. bool barrierDismissible = true,
  8. LiquidGlassSettings? settings,
  9. GlassQuality? quality,
})

A glass morphism action sheet following iOS 26 liquid glass design.

This action sheet provides an iOS-style bottom action sheet with:

  • iOS 26 liquid glass backdrop effect
  • Bottom-anchored action list
  • Destructive action styling (red text/icon)
  • Cancel button always at bottom with separator
  • Tap outside to dismiss
  • Slide-up animation
  • Optional title and message

Usage

Basic Action Sheet

showGlassActionSheet(
  context: context,
  title: 'Delete Photo?',
  message: 'This action cannot be undone',
  actions: [
    GlassActionSheetAction(
      label: 'Delete',
      style: GlassActionSheetStyle.destructive,
      onPressed: () {
        // Delete logic
        Navigator.pop(context);
      },
    ),
  ],
);

Multiple Actions

showGlassActionSheet(
  context: context,
  title: 'Choose Action',
  actions: [
    GlassActionSheetAction(
      label: 'Save to Photos',
      icon: Icon(CupertinoIcons.photo),
      onPressed: () => save(),
    ),
    GlassActionSheetAction(
      label: 'Share',
      icon: Icon(CupertinoIcons.share),
      onPressed: () => share(),
    ),
    GlassActionSheetAction(
      label: 'Delete',
      icon: Icon(CupertinoIcons.delete),
      style: GlassActionSheetStyle.destructive,
      onPressed: () => delete(),
    ),
  ],
);

Custom Cancel Label

showGlassActionSheet(
  context: context,
  title: 'Select Option',
  actions: [...],
  cancelLabel: 'Dismiss', // Custom cancel button text
);

No Cancel Button

showGlassActionSheet(
  context: context,
  title: 'Select Option',
  actions: [...],
  showCancelButton: false,
);

iOS 26 Design Principles

  • Bottom-anchored: Always slides up from bottom
  • Grouped layout: Actions in one card, cancel button separated
  • Destructive styling: Red text for dangerous actions
  • Glass backdrop: Liquid glass effect on action cards
  • Modal dismissal: Tap outside or cancel to dismiss
  • Safe area aware: Respects bottom safe area

Differences from GlassSheet

  • GlassActionSheet: Predefined action list (like iOS UIAlertController)
  • GlassSheet: Custom content (like iOS UISheetPresentationController)

Use showGlassActionSheet when you need a simple action picker. Use GlassSheet when you need custom content or forms.

Implementation

Future<T?> showGlassActionSheet<T>({
  required BuildContext context,
  String? title,
  String? message,
  required List<GlassActionSheetAction> actions,
  String cancelLabel = 'Cancel',
  bool showCancelButton = true,
  bool barrierDismissible = true,
  LiquidGlassSettings? settings,
  GlassQuality? quality,
}) {
  return showCupertinoModalPopup<T>(
    context: context,
    barrierDismissible: barrierDismissible,
    barrierColor: GlassDefaults.barrierColor,
    builder: (context) => _GlassActionSheetContent(
      title: title,
      message: message,
      actions: actions,
      cancelLabel: cancelLabel,
      showCancelButton: showCancelButton,
      settings: settings,
      quality: quality,
    ),
  );
}