@@ -34,7 +34,8 @@ const Duration _kExpand = Duration(milliseconds: 200);
3434/// to the [leading] and [trailing] properties of [ExpansionTile] .
3535///
3636/// {@tool dartpad}
37- /// This example demonstrates different configurations of ExpansionTile.
37+ /// This example demonstrates how the [ExpansionTile] icon's location and appearance
38+ /// can be customized.
3839///
3940/// ** See code in examples/api/lib/material/expansion_tile/expansion_tile.0.dart **
4041/// {@end-tool}
@@ -216,7 +217,7 @@ class ExpansionTile extends StatefulWidget {
216217 /// Used to override to the [ListTileThemeData.iconColor] .
217218 ///
218219 /// If this property is null then [ExpansionTileThemeData.iconColor] is used. If that
219- /// is also null then the value of [ListTileThemeData.iconColor ] is used.
220+ /// is also null then the value of [ColorScheme.primary ] is used.
220221 ///
221222 /// See also:
222223 ///
@@ -227,6 +228,15 @@ class ExpansionTile extends StatefulWidget {
227228 /// The icon color of tile's expansion arrow icon when the sublist is collapsed.
228229 ///
229230 /// Used to override to the [ListTileThemeData.iconColor] .
231+ ///
232+ /// If this property is null then [ExpansionTileThemeData.collapsedIconColor] is used. If that
233+ /// is also null and [ThemeData.useMaterial3] is true, [ColorScheme.onSurface] is used. Otherwise,
234+ /// defaults to [ThemeData.unselectedWidgetColor] color.
235+ ///
236+ /// See also:
237+ ///
238+ /// * [ExpansionTileTheme.of] , which returns the nearest [ExpansionTileTheme] 's
239+ /// [ExpansionTileThemeData] .
230240 final Color ? collapsedIconColor;
231241
232242
@@ -235,7 +245,8 @@ class ExpansionTile extends StatefulWidget {
235245 /// Used to override to the [ListTileThemeData.textColor] .
236246 ///
237247 /// If this property is null then [ExpansionTileThemeData.textColor] is used. If that
238- /// is also null then the value of [ListTileThemeData.textColor] is used.
248+ /// is also null then and [ThemeData.useMaterial3] is true, color of the [TextTheme.bodyLarge]
249+ /// will be used for the [title] and [subtitle] . Otherwise, defaults to [ColorScheme.primary] color.
239250 ///
240251 /// See also:
241252 ///
@@ -247,8 +258,10 @@ class ExpansionTile extends StatefulWidget {
247258 ///
248259 /// Used to override to the [ListTileThemeData.textColor] .
249260 ///
250- /// If this property is null then [ExpansionTileThemeData.collapsedTextColor] is used. If that
251- /// is also null then the value of [ListTileThemeData.textColor] is used.
261+ /// If this property is null then [ExpansionTileThemeData.collapsedTextColor] is used.
262+ /// If that is also null and [ThemeData.useMaterial3] is true, color of the
263+ /// [TextTheme.bodyLarge] will be used for the [title] and [subtitle] . Otherwise,
264+ /// defaults to color of the [TextTheme.titleMedium] .
252265 ///
253266 /// See also:
254267 ///
@@ -441,7 +454,9 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
441454 void didChangeDependencies () {
442455 final ThemeData theme = Theme .of (context);
443456 final ExpansionTileThemeData expansionTileTheme = ExpansionTileTheme .of (context);
444- final ColorScheme colorScheme = theme.colorScheme;
457+ final ExpansionTileThemeData defaults = theme.useMaterial3
458+ ? _ExpansionTileDefaultsM3 (context)
459+ : _ExpansionTileDefaultsM2 (context);
445460 _borderTween
446461 ..begin = widget.collapsedShape
447462 ?? expansionTileTheme.collapsedShape
@@ -458,13 +473,13 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
458473 _headerColorTween
459474 ..begin = widget.collapsedTextColor
460475 ?? expansionTileTheme.collapsedTextColor
461- ?? theme.textTheme.titleMedium ! .color
462- ..end = widget.textColor ?? expansionTileTheme.textColor ?? colorScheme.primary ;
476+ ?? defaults.collapsedTextColor
477+ ..end = widget.textColor ?? expansionTileTheme.textColor ?? defaults.textColor ;
463478 _iconColorTween
464479 ..begin = widget.collapsedIconColor
465480 ?? expansionTileTheme.collapsedIconColor
466- ?? theme.unselectedWidgetColor
467- ..end = widget.iconColor ?? expansionTileTheme.iconColor ?? colorScheme.primary ;
481+ ?? defaults.collapsedIconColor
482+ ..end = widget.iconColor ?? expansionTileTheme.iconColor ?? defaults.iconColor ;
468483 _backgroundColorTween
469484 ..begin = widget.collapsedBackgroundColor ?? expansionTileTheme.collapsedBackgroundColor
470485 ..end = widget.backgroundColor ?? expansionTileTheme.backgroundColor;
@@ -498,3 +513,54 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
498513 );
499514 }
500515}
516+
517+ class _ExpansionTileDefaultsM2 extends ExpansionTileThemeData {
518+ _ExpansionTileDefaultsM2 (this .context);
519+
520+ final BuildContext context;
521+ late final ThemeData _theme = Theme .of (context);
522+ late final ColorScheme _colorScheme = _theme.colorScheme;
523+
524+ @override
525+ Color ? get textColor => _colorScheme.primary;
526+
527+ @override
528+ Color ? get iconColor => _colorScheme.primary;
529+
530+ @override
531+ Color ? get collapsedTextColor => _theme.textTheme.titleMedium! .color;
532+
533+ @override
534+ Color ? get collapsedIconColor => _theme.unselectedWidgetColor;
535+ }
536+
537+ // BEGIN GENERATED TOKEN PROPERTIES - ExpansionTile
538+
539+ // Do not edit by hand. The code between the "BEGIN GENERATED" and
540+ // "END GENERATED" comments are generated from data in the Material
541+ // Design token database by the script:
542+ // dev/tools/gen_defaults/bin/gen_defaults.dart.
543+
544+ // Token database version: v0_152
545+
546+ class _ExpansionTileDefaultsM3 extends ExpansionTileThemeData {
547+ _ExpansionTileDefaultsM3 (this .context);
548+
549+ final BuildContext context;
550+ late final ThemeData _theme = Theme .of (context);
551+ late final ColorScheme _colors = _theme.colorScheme;
552+
553+ @override
554+ Color ? get textColor => Theme .of (context).textTheme.bodyLarge! .color;
555+
556+ @override
557+ Color ? get iconColor => _colors.primary;
558+
559+ @override
560+ Color ? get collapsedTextColor => Theme .of (context).textTheme.bodyLarge! .color;
561+
562+ @override
563+ Color ? get collapsedIconColor => _colors.onSurface;
564+ }
565+
566+ // END GENERATED TOKEN PROPERTIES - ExpansionTile
0 commit comments