GlassInteractionSettings class

Theme-level configuration for glass widget interaction physics.

Controls how glass buttons and chips respond to touch — the jelly-like squash & stretch, press scaling, and drag resistance that replicate iOS 26 button behaviour.

This class lives on GlassThemeData (not per-brightness GlassThemeVariant) because interaction physics don't change between light and dark mode.

Resolution order

Each interactive glass widget resolves its interaction parameters as:

explicit widget parameter > theme > hardcoded default

This matches Flutter's standard pattern (like TextStyle resolution).

Usage

Set globally via theme:

GlassTheme(
  data: GlassThemeData(
    interaction: GlassInteractionSettings(
      stretch: 0.2,        // subtler stretch globally
      interactionScale: 1.15, // less inflation on press
    ),
  ),
  child: child!,
)

Disable stretch app-wide:

GlassTheme(
  data: GlassThemeData(
    interaction: GlassInteractionSettings(
      stretch: 0.0,  // no drag-following, keeps press-scale
    ),
  ),
  child: child!,
)

Per-button override still works:

GlassButton(
  stretch: 0.8,  // overrides the theme's 0.2
  icon: Icon(CupertinoIcons.play),
  onTap: () {},
)
Annotations

Constructors

GlassInteractionSettings({double? stretch, double? interactionScale, double? resistance, bool? anchorStretch, AnchorStretchSettings? anchorStretchSettings})
Creates interaction settings for glass widgets.
const

Properties

anchorStretch → bool?
Whether the stretch anchors the widget in place.
final
anchorStretchSettings → AnchorStretchSettings?
Fine-tuning for the anchor stretch effect.
final
hashCode → int
The hash code for this object.
no setteroverride
interactionScale → double?
The scale factor applied when the user presses the widget.
final
resistance → double?
The resistance factor applied to the drag offset.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
stretch → double?
The factor to multiply the drag offset by to determine the stretch amount in pixels.
final

Methods

copyWith({double? stretch, double? interactionScale, double? resistance, bool? anchorStretch, AnchorStretchSettings? anchorStretchSettings}) → GlassInteractionSettings
Creates a copy with overridden values.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited

Operators

operator ==(Object other) → bool
The equality operator.
override

Constants

defaults → const GlassInteractionSettings
Default interaction settings — all null, meaning each widget uses its own hardcoded default.