GlassDialog class
A glass morphism alert dialog following Apple's iOS design patterns.
GlassDialog provides a modal dialog with liquid glass effect, composing GlassContainer.card and GlassButton as building blocks.
Key Features
- Liquid glass backdrop with blur effect
- Composable design using GlassContainer.card + GlassButton
- iOS-style alert layout
- 1-3 action buttons with smart layout
- Customizable glass settings
- Optional custom content
Usage
Basic Alert
GlassDialog.show(
context: context,
title: 'Delete Item?',
message: 'This action cannot be undone.',
actions: [
GlassDialogAction(
label: 'Cancel',
onPressed: () => Navigator.pop(context),
),
GlassDialogAction(
label: 'Delete',
isDestructive: true,
onPressed: () {
// Delete logic
Navigator.pop(context);
},
),
],
);
Single Action
GlassDialog.show(
context: context,
title: 'Success',
message: 'Your changes have been saved.',
actions: [
GlassDialogAction(
label: 'OK',
onPressed: () => Navigator.pop(context),
),
],
);
Three Actions
GlassDialog.show(
context: context,
title: 'Save Changes?',
message: 'You have unsaved changes.',
actions: [
GlassDialogAction(
label: 'Don\'t Save',
onPressed: () => Navigator.pop(context, false),
),
GlassDialogAction(
label: 'Cancel',
onPressed: () => Navigator.pop(context),
),
GlassDialogAction(
label: 'Save',
isPrimary: true,
onPressed: () => Navigator.pop(context, true),
),
],
);
Custom Content
GlassDialog.show(
context: context,
title: 'Enter Name',
content: Padding(
padding: EdgeInsets.symmetric(vertical: 16),
child: TextField(
decoration: InputDecoration(
hintText: 'Name',
),
),
),
actions: [
GlassDialogAction(
label: 'Cancel',
onPressed: () => Navigator.pop(context),
),
GlassDialogAction(
label: 'OK',
isPrimary: true,
onPressed: () => Navigator.pop(context),
),
],
);
Custom Glass Settings
GlassDialog.show(
context: context,
title: 'Custom Dialog',
message: 'With custom glass effect',
settings: LiquidGlassSettings(
thickness: 40,
blur: 15,
glassColor: Colors.purple,
),
actions: [
GlassDialogAction(
label: 'OK',
onPressed: () => Navigator.pop(context),
),
],
);
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- GlassDialog
- Available extensions
Constructors
-
GlassDialog({required List<
GlassDialogAction> actions, Key? key, String? title, String? message, Widget? content, LiquidGlassSettings? settings, GlassQuality? quality, double maxWidth = 280}) -
Creates a glass dialog widget.
const
Properties
-
actions
→ List<
GlassDialogAction> -
Action buttons to display at the bottom of the dialog.
final
- content → Widget?
-
Custom content widget.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- maxWidth → double
-
Maximum width of the dialog in logical pixels.
final
- message → String?
-
Message text of the dialog.
final
- quality → GlassQuality?
-
Rendering quality for the glass effect.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- settings → LiquidGlassSettings?
-
Glass effect settings for the dialog.
final
- title → String?
-
Title of the dialog.
final
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
glassContextMenu(
{Key? key, required List< Widget> actions, WidgetBuilder? previewBuilder, bool enabled = true, bool enableHaptics = true, 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, VoidCallback? onOpened, VoidCallback? onDismissed, Duration longPressDuration = const Duration(milliseconds: 700)}) → Widget -
Available on Widget, provided by the GlassContextMenuExtension extension
Wraps this widget in a GlassContextMenu displayingactionson long-press or right-click. -
glassFullScreenCover(
{required bool isPresented, VoidCallback? onDismiss, required WidgetBuilder content, bool enableSwipeToDismiss = true, double dismissThreshold = 140.0, LiquidGlassSettings? settings, GlassQuality? quality}) → Widget -
Available on Widget, provided by the GlassFullScreenCoverExtension extension
Presents a full-viewport modal cover wheneverisPresentedis true. -
Available on Widget, provided by the GlassNavigationTitleExtension extension
Annotates this widget with a navigation title that drives enclosing or descendant GlassAppBar / GlassAppBar.pinned bars (when their explicittitleis null) as well as header accessibility semantics. -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
show<
T> ({required BuildContext context, required List< GlassDialogAction> actions, String? title, String? message, Widget? content, LiquidGlassSettings? settings, GlassQuality quality = GlassQuality.standard, bool barrierDismissible = false, Color? barrierColor, double maxWidth = 280}) → Future<T?> - Shows a glass dialog.