From 8211aaa2ae7080233e8f8cba72704c252a2fb321 Mon Sep 17 00:00:00 2001 From: xubaolin Date: Mon, 12 Oct 2020 17:25:38 +0800 Subject: [PATCH] Fix ListTile assert when layout at zero size (#66798) * Fix ListTile assert when layout at zero size #66636 --- .../flutter/lib/src/material/list_tile.dart | 4 ++-- .../flutter/test/material/list_tile_test.dart | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/src/material/list_tile.dart b/packages/flutter/lib/src/material/list_tile.dart index 175227d3a73..d94b28fe596 100644 --- a/packages/flutter/lib/src/material/list_tile.dart +++ b/packages/flutter/lib/src/material/list_tile.dart @@ -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)' diff --git a/packages/flutter/test/material/list_tile_test.dart b/packages/flutter/test/material/list_tile_test.dart index b563840ae61..1a986b1c491 100644 --- a/packages/flutter/test/material/list_tile_test.dart +++ b/packages/flutter/test/material/list_tile_test.dart @@ -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)); + }); }