Add M3 Intrinsic width tests for InputDecoration (#154098)

## Description

This PR migrates InputDecorator intrinsic width tests to M3.

## Related Issue

Part of https://github.com/flutter/flutter/issues/139076
This commit is contained in:
Bruno Leroux 2024-08-26 20:40:55 +02:00 committed by GitHub
parent 602f9affa6
commit 309ae21448
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -7680,6 +7680,72 @@ void main() {
expect(tester.takeException(), isNull); expect(tester.takeException(), isNull);
}); });
group('Intrinsic width', () {
const EdgeInsetsGeometry padding = EdgeInsetsDirectional.only(end: 24, start: 12);
const InputDecoration decorationWithoutIcons = InputDecoration(contentPadding: padding);
const InputDecoration decorationWithPrefix = InputDecoration(contentPadding: padding, prefixIcon: Icon(Icons.search));
const InputDecoration decorationWithSuffix = InputDecoration(contentPadding: padding, suffixIcon: Icon(Icons.search));
const InputDecoration decorationWithAffixes = InputDecoration(
contentPadding: padding,
prefixIcon: Icon(Icons.search),
suffixIcon: Icon(Icons.search),
);
Future<Size> measureText(WidgetTester tester, InputDecoration decoration, TextDirection direction) async {
await tester.pumpWidget(
buildInputDecorator(
decoration: decoration,
useIntrinsicWidth: true,
textDirection: direction,
),
);
return tester.renderObject<RenderBox>(findInputText()).size;
}
testWidgets('with prefixIcon in LTR', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.ltr);
expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
});
testWidgets('with suffixIcon in LTR', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.ltr);
expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
});
testWidgets('with prefixIcon and suffixIcon in LTR', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.ltr);
final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.ltr);
expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
});
testWidgets('with prefixIcon in RTL', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
final Size textSizeWithPrefixIcon = await measureText(tester, decorationWithPrefix, TextDirection.rtl);
expect(textSizeWithPrefixIcon.width, equals(textSizeWithoutIcon.width));
});
testWidgets('with suffixIcon in RTL', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
final Size textSizeWithSuffixIcon = await measureText(tester, decorationWithSuffix, TextDirection.rtl);
expect(textSizeWithSuffixIcon.width, equals(textSizeWithoutIcon.width));
});
testWidgets('with prefixIcon and suffixIcon in RTL', (WidgetTester tester) async {
final Size textSizeWithoutIcon = await measureText(tester, decorationWithoutIcons, TextDirection.rtl);
final Size textSizeWithIcons = await measureText(tester, decorationWithAffixes, TextDirection.rtl);
expect(textSizeWithIcons.width, equals(textSizeWithoutIcon.width));
});
});
testWidgets('Ensure the height of labelStyle remains unchanged when TextField is focused', (WidgetTester tester) async { testWidgets('Ensure the height of labelStyle remains unchanged when TextField is focused', (WidgetTester tester) async {
// Regression test for https://github.com/flutter/flutter/issues/141448. // Regression test for https://github.com/flutter/flutter/issues/141448.
final FocusNode focusNode = FocusNode(); final FocusNode focusNode = FocusNode();