@@ -7680,6 +7680,72 @@ void main() {
7680
7680
expect(tester.takeException(), isNull);
7681
7681
});
7682
7682
7683
+ group('Intrinsic width', () {
7684
+ const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(end: 24, start: 12);
7685
+
7686
+ const InputDecoration decorationWithoutIcons = InputDecoration(contentPadding: padding);
7687
+ const InputDecoration decorationWithPrefix = InputDecoration(contentPadding: padding, prefixIcon: Icon(Icons.search));
7688
+ const InputDecoration decorationWithSuffix = InputDecoration(contentPadding: padding, suffixIcon: Icon(Icons.search));
7689
+ const InputDecoration decorationWithAffixes = InputDecoration(
7690
+ contentPadding: padding,
7691
+ prefixIcon: Icon(Icons.search),
7692
+ suffixIcon: Icon(Icons.search),
7693
+ );
7694
+
7695
+ Future<Size> measureText(WidgetTester tester, InputDecoration decoration, TextDirection direction) async {
7696
+ await tester.pumpWidget(
7697
+ buildInputDecorator(
7698
+ decoration: decoration,
7699
+ useIntrinsicWidth: true,
7700
+ textDirection: direction,
7701
+ ),
7702
+ );
7703
+ return tester.renderObject<RenderBox>(findInputText()).size;
7704
+ }
7705
+
7706
+ testWidgets('with prefixIcon in LTR', (WidgetTester tester) async {
7707
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7708
+ final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.ltr);
7709
+
7710
+ expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
7711
+ });
7712
+
7713
+ testWidgets('with suffixIcon in LTR', (WidgetTester tester) async {
7714
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7715
+ final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.ltr);
7716
+
7717
+ expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
7718
+ });
7719
+
7720
+ testWidgets('with prefixIcon and suffixIcon in LTR', (WidgetTester tester) async {
7721
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
7722
+ final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.ltr);
7723
+
7724
+ expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
7725
+ });
7726
+
7727
+ testWidgets('with prefixIcon in RTL', (WidgetTester tester) async {
7728
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7729
+ final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.rtl);
7730
+
7731
+ expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
7732
+ });
7733
+
7734
+ testWidgets('with suffixIcon in RTL', (WidgetTester tester) async {
7735
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7736
+ final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.rtl);
7737
+
7738
+ expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
7739
+ });
7740
+
7741
+ testWidgets('with prefixIcon and suffixIcon in RTL', (WidgetTester tester) async {
7742
+ final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
7743
+ final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.rtl);
7744
+
7745
+ expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
7746
+ });
7747
+ });
7748
+
7683
7749
testWidgets('Ensure the height of labelStyle remains unchanged when TextField is focused', (WidgetTester tester) async {
7684
7750
// Regression test for https://github.com/flutter/flutter/issues/141448.
7685
7751
final FocusNode focusNode = FocusNode();
0 commit comments