@@ -34,7 +34,8 @@ const Duration _kExpand = Duration(milliseconds: 200);
34
34
/// to the [leading] and [trailing] properties of [ExpansionTile] .
35
35
///
36
36
/// {@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.
38
39
///
39
40
/// ** See code in examples/api/lib/material/expansion_tile/expansion_tile.0.dart **
40
41
/// {@end-tool}
@@ -218,7 +219,7 @@ class ExpansionTile extends StatefulWidget {
218
219
/// Used to override to the [ListTileThemeData.iconColor] .
219
220
///
220
221
/// If this property is null then [ExpansionTileThemeData.iconColor] is used. If that
221
- /// is also null then the value of [ListTileThemeData.iconColor ] is used.
222
+ /// is also null then the value of [ColorScheme.primary ] is used.
222
223
///
223
224
/// See also:
224
225
///
@@ -229,6 +230,15 @@ class ExpansionTile extends StatefulWidget {
229
230
/// The icon color of tile's expansion arrow icon when the sublist is collapsed.
230
231
///
231
232
/// Used to override to the [ListTileThemeData.iconColor] .
233
+ ///
234
+ /// If this property is null then [ExpansionTileThemeData.collapsedIconColor] is used. If that
235
+ /// is also null and [ThemeData.useMaterial3] is true, [ColorScheme.onSurface] is used. Otherwise,
236
+ /// defaults to [ThemeData.unselectedWidgetColor] color.
237
+ ///
238
+ /// See also:
239
+ ///
240
+ /// * [ExpansionTileTheme.of] , which returns the nearest [ExpansionTileTheme] 's
241
+ /// [ExpansionTileThemeData] .
232
242
final Color ? collapsedIconColor;
233
243
234
244
@@ -237,7 +247,8 @@ class ExpansionTile extends StatefulWidget {
237
247
/// Used to override to the [ListTileThemeData.textColor] .
238
248
///
239
249
/// If this property is null then [ExpansionTileThemeData.textColor] is used. If that
240
- /// is also null then the value of [ListTileThemeData.textColor] is used.
250
+ /// is also null then and [ThemeData.useMaterial3] is true, color of the [TextTheme.bodyLarge]
251
+ /// will be used for the [title] and [subtitle] . Otherwise, defaults to [ColorScheme.primary] color.
241
252
///
242
253
/// See also:
243
254
///
@@ -249,8 +260,10 @@ class ExpansionTile extends StatefulWidget {
249
260
///
250
261
/// Used to override to the [ListTileThemeData.textColor] .
251
262
///
252
- /// If this property is null then [ExpansionTileThemeData.collapsedTextColor] is used. If that
253
- /// is also null then the value of [ListTileThemeData.textColor] is used.
263
+ /// If this property is null then [ExpansionTileThemeData.collapsedTextColor] is used.
264
+ /// If that is also null and [ThemeData.useMaterial3] is true, color of the
265
+ /// [TextTheme.bodyLarge] will be used for the [title] and [subtitle] . Otherwise,
266
+ /// defaults to color of the [TextTheme.titleMedium] .
254
267
///
255
268
/// See also:
256
269
///
@@ -443,7 +456,9 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
443
456
void didChangeDependencies () {
444
457
final ThemeData theme = Theme .of (context);
445
458
final ExpansionTileThemeData expansionTileTheme = ExpansionTileTheme .of (context);
446
- final ColorScheme colorScheme = theme.colorScheme;
459
+ final ExpansionTileThemeData defaults = theme.useMaterial3
460
+ ? _ExpansionTileDefaultsM3 (context)
461
+ : _ExpansionTileDefaultsM2 (context);
447
462
_borderTween
448
463
..begin = widget.collapsedShape
449
464
?? expansionTileTheme.collapsedShape
@@ -460,13 +475,13 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
460
475
_headerColorTween
461
476
..begin = widget.collapsedTextColor
462
477
?? expansionTileTheme.collapsedTextColor
463
- ?? theme.textTheme.titleMedium ! .color
464
- ..end = widget.textColor ?? expansionTileTheme.textColor ?? colorScheme.primary ;
478
+ ?? defaults.collapsedTextColor
479
+ ..end = widget.textColor ?? expansionTileTheme.textColor ?? defaults.textColor ;
465
480
_iconColorTween
466
481
..begin = widget.collapsedIconColor
467
482
?? expansionTileTheme.collapsedIconColor
468
- ?? theme.unselectedWidgetColor
469
- ..end = widget.iconColor ?? expansionTileTheme.iconColor ?? colorScheme.primary ;
483
+ ?? defaults.collapsedIconColor
484
+ ..end = widget.iconColor ?? expansionTileTheme.iconColor ?? defaults.iconColor ;
470
485
_backgroundColorTween
471
486
..begin = widget.collapsedBackgroundColor ?? expansionTileTheme.collapsedBackgroundColor
472
487
..end = widget.backgroundColor ?? expansionTileTheme.backgroundColor;
@@ -500,3 +515,54 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
500
515
);
501
516
}
502
517
}
518
+
519
+ class _ExpansionTileDefaultsM2 extends ExpansionTileThemeData {
520
+ _ExpansionTileDefaultsM2 (this .context);
521
+
522
+ final BuildContext context;
523
+ late final ThemeData _theme = Theme .of (context);
524
+ late final ColorScheme _colorScheme = _theme.colorScheme;
525
+
526
+ @override
527
+ Color ? get textColor => _colorScheme.primary;
528
+
529
+ @override
530
+ Color ? get iconColor => _colorScheme.primary;
531
+
532
+ @override
533
+ Color ? get collapsedTextColor => _theme.textTheme.titleMedium! .color;
534
+
535
+ @override
536
+ Color ? get collapsedIconColor => _theme.unselectedWidgetColor;
537
+ }
538
+
539
+ // BEGIN GENERATED TOKEN PROPERTIES - ExpansionTile
540
+
541
+ // Do not edit by hand. The code between the "BEGIN GENERATED" and
542
+ // "END GENERATED" comments are generated from data in the Material
543
+ // Design token database by the script:
544
+ // dev/tools/gen_defaults/bin/gen_defaults.dart.
545
+
546
+ // Token database version: v0_158
547
+
548
+ class _ExpansionTileDefaultsM3 extends ExpansionTileThemeData {
549
+ _ExpansionTileDefaultsM3 (this .context);
550
+
551
+ final BuildContext context;
552
+ late final ThemeData _theme = Theme .of (context);
553
+ late final ColorScheme _colors = _theme.colorScheme;
554
+
555
+ @override
556
+ Color ? get textColor => _colors.onSurface;
557
+
558
+ @override
559
+ Color ? get iconColor => _colors.primary;
560
+
561
+ @override
562
+ Color ? get collapsedTextColor => _colors.onSurface;
563
+
564
+ @override
565
+ Color ? get collapsedIconColor => _colors.onSurfaceVariant;
566
+ }
567
+
568
+ // END GENERATED TOKEN PROPERTIES - ExpansionTile
0 commit comments