GlassListTile class

A glass-aesthetic list tile following iOS 26 grouped row design.

GlassListTile is the glass design system's equivalent of Flutter's ListTile — a clean, stateless item with no knowledge of its position.

Divider rendering is the responsibility of the parent container: GlassGroupedSection automatically injects GlassDividers between tiles. For standalone column layouts, compose GlassDivider explicitly, as you would with Flutter's built-in ListTile + Divider pattern.

GlassGroupedSection(
  header: const Text('NETWORK'),
  children: [
    GlassListTile(
      leading: Icon(CupertinoIcons.wifi, color: CupertinoColors.white),
      title: Text('Wi-Fi'),
      trailing: GlassListTile.chevron,
    ),
    GlassListTile(
      leading: Icon(CupertinoIcons.bluetooth, color: CupertinoColors.white),
      title: Text('Bluetooth'),
      trailing: GlassListTile.chevron,
    ),
  ],
)

Standalone tile (own glass layer):

GlassListTile.standalone(
  leading: Icon(CupertinoIcons.star_fill, color: Colors.yellow),
  title: Text('Featured'),
  onTap: () { },
)
Inheritance
Available extensions

Constructors

GlassListTile({Key? key, Widget? leading, required Widget title, Widget? subtitle, Widget? trailing, VoidCallback? onTap, VoidCallback? onLongPress, EdgeInsetsGeometry contentPadding = const EdgeInsets.symmetric(horizontal: 16, vertical: 12), Color? leadingIconColor, TextStyle? titleStyle, TextStyle? subtitleStyle, List<GlassSwipeAction>? leadingSwipeActions, List<GlassSwipeAction>? trailingSwipeActions, bool allowsFullSwipe = true, double fullSwipeThreshold = 0.65, double? swipeActionWidth, double? swipeActionButtonDiameter, double? swipeActionButtonSpacing, double? swipeActionHorizontalPadding, GlassSwipeController? swipeController, ValueChanged<GlassSwipeState>? onSwipeStateChanged, GlassSwipeActionStyle? swipeActionStyle, VoidCallback? onDismissed, List<Widget>? contextMenuActions, Widget contextMenuPreviewBuilder(BuildContext context)?, VoidCallback? onContextMenuDismissed, Duration? contextMenuLongPressDuration, GlassQuality? contextMenuQuality, LiquidGlassSettings? contextMenuSettings, bool? isEditing, bool canDelete = false, VoidCallback? onDelete, bool canInsert = false, VoidCallback? onInsert, bool canReorder = false, int? reorderIndex, bool canSelect = false, bool isSelected = false, ValueChanged<bool>? onSelectedChanged})
Creates a glass list tile for use inside a GlassContainer.card, GlassGroupedSection, or other glass container. Does not create its own glass layer.
const
GlassListTile.standalone({Key? key, Widget? leading, required Widget title, Widget? subtitle, Widget? trailing, VoidCallback? onTap, VoidCallback? onLongPress, EdgeInsetsGeometry contentPadding = const EdgeInsets.symmetric(horizontal: 16, vertical: 12), Color? leadingIconColor, TextStyle? titleStyle, TextStyle? subtitleStyle, List<GlassSwipeAction>? leadingSwipeActions, List<GlassSwipeAction>? trailingSwipeActions, bool allowsFullSwipe = true, double fullSwipeThreshold = 0.65, double? swipeActionWidth, double? swipeActionButtonDiameter, double? swipeActionButtonSpacing, double? swipeActionHorizontalPadding, GlassSwipeController? swipeController, ValueChanged<GlassSwipeState>? onSwipeStateChanged, GlassSwipeActionStyle? swipeActionStyle, VoidCallback? onDismissed, List<Widget>? contextMenuActions, Widget contextMenuPreviewBuilder(BuildContext context)?, VoidCallback? onContextMenuDismissed, Duration? contextMenuLongPressDuration, GlassQuality? contextMenuQuality, LiquidGlassSettings? contextMenuSettings, bool? isEditing, bool canDelete = false, VoidCallback? onDelete, bool canInsert = false, VoidCallback? onInsert, bool canReorder = false, int? reorderIndex, bool canSelect = false, bool isSelected = false, ValueChanged<bool>? onSelectedChanged, LiquidGlassSettings? settings, GlassQuality? quality})
Creates a standalone glass list tile that manages its own glass layer.
const

Properties

allowsFullSwipe → bool
Whether pulling past fullSwipeThreshold automatically executes the outermost action on release.
final
canDelete → bool
Whether this tile can be deleted in edit mode.
final
canInsert → bool
Whether this tile acts as an insertion row in edit mode (e.g. "Add Phone").
final
canReorder → bool
Whether this tile can be reordered in edit mode.
final
canSelect → bool
Whether this tile can be selected via a circular checkbox in edit mode.
final
contentPadding → EdgeInsetsGeometry
Padding inside the tile around the content row.
final
contextMenuActions → List<Widget>?
Optional context menu actions attached to this tile's content.
final
contextMenuLongPressDuration → Duration?
Duration the user must press before the context menu activates.
final
contextMenuPreviewBuilder → Widget Function(BuildContext context)?
Optional custom preview widget builder displayed above the context menu.
final
contextMenuQuality → GlassQuality?
Optional glass quality override for the context menu action platter.
final
contextMenuSettings → LiquidGlassSettings?
Optional liquid glass shader settings for the context menu action platter.
final
fullSwipeThreshold → double
Proportion of tile width required to prime full-swipe execution.
final
hashCode → int
The hash code for this object.
no setterinherited
isEditing → bool?
Whether edit mode is explicitly enabled for this tile.
final
isSelected → bool
Whether this tile is currently selected in selection mode.
final
key → Key?
Controls how one widget replaces another widget in the tree.
finalinherited
leading → Widget?
Widget displayed at the start (left) of the tile.
final
leadingIconColor → Color?
Tint applied to leading icon colour.
final
leadingSwipeActions → List<GlassSwipeAction>?
Actions revealed when swiping from the leading edge (left in LTR).
final
onContextMenuDismissed → VoidCallback?
Optional callback invoked when the context menu is dismissed.
final
onDelete → VoidCallback?
Callback executed when the deletion badge or delete button is confirmed.
final
onDismissed → VoidCallback?
Optional callback executed when the row is dismissed via full swipe.
final
onInsert → VoidCallback?
Callback executed when the green plus insertion button is tapped.
final
onLongPress → VoidCallback?
Called when the user long-presses the tile.
final
onSelectedChanged → ValueChanged<bool>?
Callback fired when the selection state changes.
final
onSwipeStateChanged → ValueChanged<GlassSwipeState>?
Callback fired when the swipe state changes.
final
onTap → VoidCallback?
Called when the user taps the tile.
final
reorderIndex → int?
Index of this item when nested in a ReorderableList or GlassReorderableList.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
subtitle → Widget?
Optional secondary content displayed under title.
final
subtitleStyle → TextStyle?
Text style for subtitle.
final
swipeActionButtonDiameter → double?
Optional diameter for circular swipe action buttons.
final
swipeActionButtonSpacing → double?
Optional spacing between adjacent swipe action buttons.
final
swipeActionHorizontalPadding → double?
Optional horizontal padding around swipe action buttons.
final
swipeActionStyle → GlassSwipeActionStyle?
Visual styling applied to the swipe action platter.
final
swipeActionWidth → double?
Base width allocated for each swipe action button.
final
swipeController → GlassSwipeController?
Optional external controller for inspecting or triggering swipe actions.
final
title → Widget
Primary content. Typically a Text widget.
final
titleStyle → TextStyle?
Text style for title.
final
trailing → Widget?
Widget displayed at the end (right) of the tile.
final
trailingSwipeActions → List<GlassSwipeAction>?
Actions revealed when swiping from the trailing edge (right in LTR).
final

Methods

createElement() → StatefulElement
Creates a StatefulElement to manage this widget's location in the tree.
inherited
createState() → State<GlassListTile>
Creates the mutable state for this widget at a given location in the tree.
override
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, double menuWidth = 250.0, 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 displaying actions on 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 whenever isPresented is 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 explicit title is 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 Properties

chevron → Widget
A standard iOS-style disclosure chevron for use as trailing.
no setter
infoButton → Widget
A standard iOS-style detail disclosure (circle with 'i') for trailing.
no setter