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
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, Key? key})
-
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
- 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
- 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
-
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}) → Widget -
Static helper to render glass in a grouped context without creating a new layer.
This is the adaptive replacement for
LiquidGlass.grouped.