Fix ListTile assert when layout at zero size (#66798)

* Fix ListTile assert when layout at zero size #66636
This commit is contained in:
xubaolin 2020-10-12 17:25:38 +08:00 committed by GitHub
parent d914d5d2f9
commit 8211aaa2ae
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

View file

@ -1567,13 +1567,13 @@ class _RenderListTile extends RenderBox {
final Size leadingSize = _layoutBox(leading, iconConstraints);
final Size trailingSize = _layoutBox(trailing, iconConstraints);
assert(
tileWidth != leadingSize.width,
tileWidth != leadingSize.width || tileWidth == 0.0,
'Leading widget consumes entire tile width. Please use a sized widget, '
'or consider replacing ListTile with a custom widget '
'(see https://api.flutter.dev/flutter/material/ListTile-class.html#material.ListTile.4)'
);
assert(
tileWidth != trailingSize.width,
tileWidth != trailingSize.width || tileWidth == 0.0,
'Trailing widget consumes entire tile width. Please use a sized widget, '
'or consider replacing ListTile with a custom widget '
'(see https://api.flutter.dev/flutter/material/ListTile-class.html#material.ListTile.4)'

View file

@ -1692,4 +1692,26 @@ void main() {
coloredBox = tester.widget(find.byType(ColoredBox));
expect(coloredBox.color, selectedTileColor);
});
testWidgets('ListTile layout at zero size', (WidgetTester tester) async {
// Regression test for https://github.com/flutter/flutter/issues/66636
const Key key = Key('key');
await tester.pumpWidget(const MaterialApp(
home: Scaffold(
body: SizedBox(
width: 0.0,
height: 0.0,
child: ListTile(
key: key,
tileColor: Colors.green,
),
),
),
));
final RenderBox renderBox = tester.renderObject(find.byKey(key));
expect(renderBox.size.width, equals(0.0));
expect(renderBox.size.height, equals(0.0));
});
}