Trailing widget override for ExpansionTile (#11904)

* Trailing widget override for ExpansionTile

Fixes #11890

* Add a test

* Replaced missing comma
This commit is contained in:
Kyle Bradshaw 2017-09-14 14:25:49 -05:00 committed by Ian Hickson
parent 33daa2f982
commit 016f939074
2 changed files with 34 additions and 1 deletions

View File

@ -38,6 +38,7 @@ class ExpansionTile extends StatefulWidget {
this.backgroundColor,
this.onExpansionChanged,
this.children: const <Widget>[],
this.trailing,
}) : super(key: key);
/// A widget to display before the title.
@ -64,6 +65,9 @@ class ExpansionTile extends StatefulWidget {
/// The color to display behind the sublist when expanded.
final Color backgroundColor;
/// A widget to display instead of a rotating arrow icon.
final Widget trailing;
@override
_ExpansionTileState createState() => new _ExpansionTileState();
@ -145,7 +149,7 @@ class _ExpansionTileState extends State<ExpansionTile> with SingleTickerProvider
style: Theme.of(context).textTheme.subhead.copyWith(color: titleColor),
child: widget.title,
),
trailing: new RotationTransition(
trailing: widget.trailing ?? new RotationTransition(
turns: _iconTurns,
child: const Icon(Icons.expand_more),
),

View File

@ -103,4 +103,33 @@ void main() {
await tester.tap(find.text('Sublist'));
expect(didChangeOpen, isFalse);
});
testWidgets('trailing override', (WidgetTester tester) async {
final Map<String, WidgetBuilder> routes = <String, WidgetBuilder>{
'/': (_) {
return new Material(
child: new SingleChildScrollView(
child: new Column(
children: <Widget>[
const ListTile(title: const Text('Top')),
new ExpansionTile(
title: const Text('Sublist'),
children: <Widget>[
const ListTile(title: const Text('0')),
const ListTile(title: const Text('1'))
],
trailing: const Icon(Icons.inbox),
),
const ListTile(title: const Text('Bottom'))
]
)
)
);
}
};
await tester.pumpWidget(new MaterialApp(routes: routes));
expect(find.byIcon(Icons.inbox), findsOneWidget);
expect(find.byIcon(Icons.expand_more), findsNothing);
});
}