From 48ba488d33a457a1faab84f7cef55d7fbecb8771 Mon Sep 17 00:00:00 2001 From: renyou Date: Thu, 17 Sep 2020 12:37:33 -0400 Subject: [PATCH] Revert "TextField constrained layout bug (#65966)" (#66027) This reverts commit 10a66b19d5a7b7169602af74795c80e139907266. --- .../lib/src/material/input_decorator.dart | 12 ++--- .../test/material/input_decorator_test.dart | 51 ------------------- 2 files changed, 6 insertions(+), 57 deletions(-) diff --git a/packages/flutter/lib/src/material/input_decorator.dart b/packages/flutter/lib/src/material/input_decorator.dart index 073ce3615c2..4a726d5be38 100644 --- a/packages/flutter/lib/src/material/input_decorator.dart +++ b/packages/flutter/lib/src/material/input_decorator.dart @@ -1032,12 +1032,11 @@ class _RenderDecoration extends RenderBox { counterHeight, helperErrorHeight, ); - final Offset densityOffset = decoration.visualDensity.baseSizeAdjustment; boxToBaseline[input] = _layoutLineBox( input, boxConstraints.deflate(EdgeInsets.only( - top: contentPadding.top + topHeight + densityOffset.dy / 2, - bottom: contentPadding.bottom + bottomHeight + densityOffset.dy / 2, + top: contentPadding.top + topHeight, + bottom: contentPadding.bottom + bottomHeight, )).copyWith( minWidth: inputWidth, maxWidth: inputWidth, @@ -1066,12 +1065,13 @@ class _RenderDecoration extends RenderBox { prefixHeight - boxToBaseline[prefix], suffixHeight - boxToBaseline[suffix], ); - final double fixBelowInput = fixBelowBaseline <= 0.0 ? 0.0 : math.max( + final double fixBelowInput = math.max( 0, fixBelowBaseline - (inputHeight - inputInternalBaseline), ); // Calculate the height of the input text container. + final Offset densityOffset = decoration.visualDensity.baseSizeAdjustment; final double prefixIconHeight = prefixIcon == null ? 0 : prefixIcon.size.height; final double suffixIconHeight = suffixIcon == null ? 0 : suffixIcon.size.height; final double fixIconHeight = math.max(prefixIconHeight, suffixIconHeight); @@ -1087,8 +1087,8 @@ class _RenderDecoration extends RenderBox { ); final double minContainerHeight = decoration.isDense || decoration.isCollapsed || expands ? 0.0 - : kMinInteractiveDimension; - final double maxContainerHeight = boxConstraints.maxHeight - bottomHeight; + : kMinInteractiveDimension + densityOffset.dy; + final double maxContainerHeight = boxConstraints.maxHeight - bottomHeight + densityOffset.dy; final double containerHeight = expands ? maxContainerHeight : math.min(math.max(contentHeight, minContainerHeight), maxContainerHeight); diff --git a/packages/flutter/test/material/input_decorator_test.dart b/packages/flutter/test/material/input_decorator_test.dart index bad322c13ff..61cf8c9fa19 100644 --- a/packages/flutter/test/material/input_decorator_test.dart +++ b/packages/flutter/test/material/input_decorator_test.dart @@ -4235,55 +4235,4 @@ void main() { expect(tester.getSize(find.text(labelText)).width, labelWidth); expect(getOpacity(tester, prefixText), 1.0); }); - - testWidgets('given enough space, constrained and unconstrained heights result in the same size widget', (WidgetTester tester) async { - // Regression test for https://github.com/flutter/flutter/issues/65572 - final UniqueKey keyUnconstrained = UniqueKey(); - final UniqueKey keyConstrained = UniqueKey(); - - Widget getInputDecorator(VisualDensity visualDensity) { - return MaterialApp( - home: Material( - child: Builder( - builder: (BuildContext context) { - return Theme( - data: Theme.of(context).copyWith(visualDensity: visualDensity), - child: Center( - child: Row( - children: [ - SizedBox( - width: 35.0, - child: TextField( - key: keyUnconstrained, - ), - ), - SizedBox( - width: 35.0, - // 48 is the height that this TextField would take when - // laid out with no constraints. - height: 48.0, - child: TextField( - key: keyConstrained, - ), - ), - ], - ), - ), - ); - }, - ), - ), - ); - } - - await tester.pumpWidget(getInputDecorator(VisualDensity.standard)); - final double constrainedHeight = tester.getSize(find.byKey(keyConstrained)).height; - final double unConstrainedHeight = tester.getSize(find.byKey(keyUnconstrained)).height; - expect(constrainedHeight, equals(unConstrainedHeight)); - - await tester.pumpWidget(getInputDecorator(VisualDensity.compact)); - final double constrainedHeightCompact = tester.getSize(find.byKey(keyConstrained)).height; - final double unConstrainedHeightCompact = tester.getSize(find.byKey(keyUnconstrained)).height; - expect(constrainedHeightCompact, equals(unConstrainedHeightCompact)); - }); }