ExpansionTile class
A single-line ListTile with an expansion arrow icon that expands or collapses the tile to reveal or hide the children.
This widget is typically used with ListView to create an "expand / collapse" list entry. When used with scrolling widgets like ListView, a unique PageStorageKey must be specified as the key, to enable the ExpansionTile to save and restore its expanded state when it is scrolled in and out of view.
This class overrides the ListTileThemeData.iconColor and ListTileThemeData.textColor theme properties for its ListTile. These colors animate between values when the tile is expanded and collapsed: between iconColor, collapsedIconColor and between textColor and collapsedTextColor.
The expansion arrow icon is shown on the right by default in left-to-right languages (i.e. the trailing edge). This can be changed using controlAffinity. This maps to the leading and trailing properties of ExpansionTile.
To create a local project with this code sample, run:
flutter create --sample=material.ExpansionTile.1 mysample
To create a local project with this code sample, run:
flutter create --sample=material.ExpansionTile.2 mysample
See also:
- ListTile, useful for creating expansion tile children when the expansion tile represents a sublist.
- The "Expand and collapse" section of material.io/components/lists#types
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatefulWidget
- ExpansionTile
Constructors
-
ExpansionTile({Key? key, Widget? leading, required Widget title, Widget? subtitle, ValueChanged<
bool> ? onExpansionChanged, List<Widget> children = const <Widget>[], Widget? trailing, bool showTrailingIcon = true, bool initiallyExpanded = false, bool maintainState = false, EdgeInsetsGeometry? tilePadding, CrossAxisAlignment? expandedCrossAxisAlignment, Alignment? expandedAlignment, EdgeInsetsGeometry? childrenPadding, Color? backgroundColor, Color? collapsedBackgroundColor, Color? textColor, Color? collapsedTextColor, Color? iconColor, Color? collapsedIconColor, ShapeBorder? shape, ShapeBorder? collapsedShape, Clip? clipBehavior, ListTileControlAffinity? controlAffinity, ExpansionTileController? controller, bool? dense, VisualDensity? visualDensity, double? minTileHeight, bool? enableFeedback = true, bool enabled = true, AnimationStyle? expansionAnimationStyle, bool internalAddSemanticForOnTap = false}) -
Creates a single-line ListTile with an expansion arrow icon that expands or collapses
the tile to reveal or hide the
children
. TheinitiallyExpanded
property must be non-null.const
Properties
- backgroundColor → Color?
-
The color to display behind the sublist when expanded.
final
-
children
→ List<
Widget> -
The widgets that are displayed when the tile expands.
final
- childrenPadding → EdgeInsetsGeometry?
-
Specifies padding for children.
final
- clipBehavior → Clip?
-
The content will be clipped (or not) according to this option.
final
- collapsedBackgroundColor → Color?
-
When not null, defines the background color of tile when the sublist is collapsed.
final
- collapsedIconColor → Color?
-
The icon color of tile's expansion arrow icon when the sublist is collapsed.
final
- collapsedShape → ShapeBorder?
-
The tile's border shape when the sublist is collapsed.
final
- collapsedTextColor → Color?
-
The color of the tile's titles when the sublist is collapsed.
final
- controlAffinity → ListTileControlAffinity?
-
Typically used to force the expansion arrow icon to the tile's leading or trailing edge.
final
- controller → ExpansionTileController?
-
If provided, the controller can be used to expand and collapse tiles.
final
- dense → bool?
-
Whether this list tile is part of a vertically dense list.
final
- enabled → bool
-
Whether this expansion tile is interactive.
final
- enableFeedback → bool?
-
Whether detected gestures should provide acoustic and/or haptic feedback.
final
- expandedAlignment → Alignment?
-
Specifies the alignment of children, which are arranged in a column when
the tile is expanded.
final
- expandedCrossAxisAlignment → CrossAxisAlignment?
-
Specifies the alignment of each child within children when the tile is expanded.
final
- expansionAnimationStyle → AnimationStyle?
-
Used to override the expansion animation curve and duration.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- iconColor → Color?
-
The icon color of tile's expansion arrow icon when the sublist is expanded.
final
- initiallyExpanded → bool
-
Specifies if the list tile is initially expanded (true) or collapsed (false, the default).
final
- internalAddSemanticForOnTap → bool
-
Whether to add button:true to the semantics if onTap is provided.
This is a temporary flag to help changing the behavior of ListTile onTap semantics.
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- leading → Widget?
-
A widget to display before the title.
final
- maintainState → bool
-
Specifies whether the state of the children is maintained when the tile expands and collapses.
final
- minTileHeight → double?
-
The minimum height allocated for the ListTile widget.
final
-
onExpansionChanged
→ ValueChanged<
bool> ? -
Called when the tile expands or collapses.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- shape → ShapeBorder?
-
The tile's border shape when the sublist is expanded.
final
- showTrailingIcon → bool
-
Specifies if the ExpansionTile should build a default trailing icon if trailing is null.
final
- subtitle → Widget?
-
Additional content displayed below the title.
final
- textColor → Color?
-
The color of the tile's titles when the sublist is expanded.
final
- tilePadding → EdgeInsetsGeometry?
-
Specifies padding for the ListTile.
final
- title → Widget
-
The primary content of the list item.
final
- trailing → Widget?
-
A widget to display after the title.
final
- visualDensity → VisualDensity?
-
Defines how compact the expansion tile's layout will be.
final
Methods
-
createElement(
) → StatefulElement -
Creates a StatefulElement to manage this widget's location in the tree.
inherited
-
createState(
) → State< ExpansionTile> -
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
-
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