AdaptiveGlass class
A renderer-agnostic glass surface that intelligently selects the best rendering path based on GlassQuality and the active Flutter renderer.
Fallback chain:
- Premium quality + Impeller available → Full shader (best quality)
- Premium quality + Skia/web → Lightweight shader (our calibrated shader)
- Standard quality → Always lightweight shader
- If lightweight shader fails → FakeGlass (final fallback)
Prefer this over LiquidGlass directly: LiquidGlass is Impeller-only
and silently renders nothing on Skia/Web.
Example:
AdaptiveGlass(
shape: LiquidRoundedSuperellipse(borderRadius: 20),
settings: LiquidGlassSettings(blur: 8),
child: Text('Hello glass'),
)
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- AdaptiveGlass
- Available extensions
Constructors
- AdaptiveGlass({required LiquidShape shape, required LiquidGlassSettings settings, required Widget child, GlassQuality quality = GlassQuality.standard, bool useOwnLayer = true, Clip clipBehavior = Clip.antiAlias, bool allowElevation = true, double glowIntensity = 0.0, bool isInteractive = false, bool platformViewBackdrop = false, EdgeInsets clipExpansion = EdgeInsets.zero, Key? key})
-
Creates a new AdaptiveGlass.
const
Properties
- allowElevation → bool
-
Whether to allow "Specular Elevation" when in a grouped context.
Should be true for interactive objects (buttons) and false for layers/containers.
final
- child → Widget
-
The widget displayed inside the glass surface.
final
- clipBehavior → Clip
-
How to clip the child widget to the shape boundary.
Defaults to Clip.antiAlias.
final
- clipExpansion → EdgeInsets
-
Extra space (logical pixels) to inflate the RepaintBoundary paint bounds
in all four directions, forwarded to
LiquidGlass.withOwnLayer.final - glowIntensity → double
-
Interactive glow intensity for Skia/Web (0.0-1.0).
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isInteractive → bool
-
When
true, optimises the frosted fallback for surfaces that update their layout bounds frequently (e.g. spring-animated buttons). Omits the BackdropFilter on GlassQuality.minimal to avoid compositor flicker.final - key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- platformViewBackdrop → bool
-
When true, this glass renders via the live
BackdropFilterpath (the lightweight render) EVEN at GlassQuality.premium — because the premium shader samples atoImageSynctexture, which cannot capture an iOS PlatformView (map, video). Set this on glass directly over a PlatformView so the live view shows through instead of a solid slab. Refraction is lost (no texture), but rim/lighting and the live blur remain. Premium children that refract Flutter content (e.g. the indicator) should NOT set this.final - quality → GlassQuality
-
Controls render fidelity. Defaults to GlassQuality.standard.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- settings → LiquidGlassSettings
-
Visual parameters for the glass effect (blur radius, tint, specular etc.).
final
- shape → LiquidShape
-
The shape that defines the outline and clipping path of the glass surface.
final
- useOwnLayer → bool
-
If
true, wraps the glass layer in a RepaintBoundary (own compositing layer). This can improve performance when the glass surface moves independently of the rest of the widget tree, at the cost of extra GPU memory. Defaults totrue.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
-
grouped(
{required LiquidShape shape, required Widget child, GlassQuality quality = GlassQuality.standard, Clip clipBehavior = Clip.antiAlias, double glowIntensity = 0.0, bool isInteractive = false, bool platformViewBackdrop = false}) → Widget -
Static helper to render glass in a grouped context without creating a new layer.
This is the adaptive replacement for
LiquidGlass.withOwnLayer. -
vibrancy(
{required LiquidShape shape, required LiquidGlassSettings settings, required Widget child}) → Widget - Static helper that renders an iOS 26 vibrancy fill for nested glass.