diff --git a/lib/web_ui/lib/src/engine/text/layout_service.dart b/lib/web_ui/lib/src/engine/text/layout_service.dart index edd1938a5be33..b5a57755bd11a 100644 --- a/lib/web_ui/lib/src/engine/text/layout_service.dart +++ b/lib/web_ui/lib/src/engine/text/layout_service.dart @@ -71,6 +71,10 @@ class TextLayoutService { didExceedMaxLines = false; lines.clear(); + if (spanCount == 0) { + return; + } + final Spanometer spanometer = Spanometer(paragraph, context); int spanIndex = 0; diff --git a/lib/web_ui/test/text/layout_service_plain_test.dart b/lib/web_ui/test/text/layout_service_plain_test.dart index 4187ee3a7bb72..811faf0113936 100644 --- a/lib/web_ui/test/text/layout_service_plain_test.dart +++ b/lib/web_ui/test/text/layout_service_plain_test.dart @@ -42,6 +42,16 @@ void main() { void testMain() async { await ui.webOnlyInitializeTestDomRenderer(); + test('no text', () { + final CanvasParagraph paragraph = CanvasParagraphBuilder(ahemStyle).build(); + paragraph.layout(constrain(double.infinity)); + + expect(paragraph.maxIntrinsicWidth, 0); + expect(paragraph.minIntrinsicWidth, 0); + expect(paragraph.height, 0); + expect(paragraph.computeLineMetrics(), isEmpty); + }); + test('preserves whitespace when measuring', () { CanvasParagraph paragraph;