From 7a0e3a309f9c78ce9cd726cd0369dc3b39c5d27a Mon Sep 17 00:00:00 2001 From: Chinmoy <57670338+chinmoy12c@users.noreply.github.com> Date: Wed, 6 Jan 2021 23:46:12 +0530 Subject: [PATCH] Prevent text from overflowing in OutlineButton and OutlinedButton label. (#70872) --- .../flutter/lib/src/material/outline_button.dart | 2 +- .../lib/src/material/outlined_button.dart | 2 +- .../test/material/outline_button_test.dart | 16 ++++++++++++++++ .../test/material/outlined_button_test.dart | 16 ++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) diff --git a/packages/flutter/lib/src/material/outline_button.dart b/packages/flutter/lib/src/material/outline_button.dart index 8c920b9b89..8f6713a694 100644 --- a/packages/flutter/lib/src/material/outline_button.dart +++ b/packages/flutter/lib/src/material/outline_button.dart @@ -310,7 +310,7 @@ class _OutlineButtonWithIcon extends OutlineButton with MaterialButtonWithIconMi children: [ icon, const SizedBox(width: 8.0), - label, + Flexible(child: label), ], ), ); diff --git a/packages/flutter/lib/src/material/outlined_button.dart b/packages/flutter/lib/src/material/outlined_button.dart index 98212289bc..ad6d0a2ce4 100644 --- a/packages/flutter/lib/src/material/outlined_button.dart +++ b/packages/flutter/lib/src/material/outlined_button.dart @@ -345,7 +345,7 @@ class _OutlinedButtonWithIconChild extends StatelessWidget { final double gap = scale <= 1 ? 8 : lerpDouble(8, 4, math.min(scale - 1, 1))!; return Row( mainAxisSize: MainAxisSize.min, - children: [icon, SizedBox(width: gap), label], + children: [icon, SizedBox(width: gap), Flexible(child: label)], ); } } diff --git a/packages/flutter/test/material/outline_button_test.dart b/packages/flutter/test/material/outline_button_test.dart index 82fc115858..301fe26174 100644 --- a/packages/flutter/test/material/outline_button_test.dart +++ b/packages/flutter/test/material/outline_button_test.dart @@ -1222,6 +1222,22 @@ void main() { expect(box.size, equals(const Size(76, 36))); expect(childRect, equals(const Rect.fromLTRB(372.0, 293.0, 428.0, 307.0))); }); + + testWidgets('Text does not overflow in OutlineButton label', (WidgetTester tester) async { + await tester.pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: MouseRegion( + cursor: SystemMouseCursors.forbidden, + child: OutlineButton.icon( + icon: const Icon(Icons.add), + label: const Text('this is a very long text used to check whether an overflow occurs or not'), + onPressed: () {}, + ), + ), + ), + ); + }); } PhysicalModelLayer _findPhysicalLayer(Element element) { diff --git a/packages/flutter/test/material/outlined_button_test.dart b/packages/flutter/test/material/outlined_button_test.dart index 521076043d..25cd729a88 100644 --- a/packages/flutter/test/material/outlined_button_test.dart +++ b/packages/flutter/test/material/outlined_button_test.dart @@ -1212,6 +1212,22 @@ void main() { ); expect(paddingWidget.padding, const EdgeInsets.all(22)); }); + + testWidgets('Text does not overflow in OutlinedButton label', (WidgetTester tester) async { + await tester.pumpWidget( + Directionality( + textDirection: TextDirection.ltr, + child: MouseRegion( + cursor: SystemMouseCursors.forbidden, + child: OutlinedButton.icon( + icon: const Icon(Icons.add), + label: const Text('this is a very long text used to check whether an overflow occurs or not'), + onPressed: () {}, + ), + ), + ), + ); + }); } PhysicalModelLayer _findPhysicalLayer(Element element) {