Skip to content

Commit

Permalink
Fix BorderSide.none requiring explicit transparent color for `Under…
Browse files Browse the repository at this point in the history
…lineInputBorder` (flutter#145329)

Fix could have been "paint transparent when Border none" but, following other Borders, we will just not paint anything.

Fix flutter#143746
  • Loading branch information
bernaferrari committed Mar 22, 2024
1 parent e1c6445 commit 784f19c
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
4 changes: 4 additions & 0 deletions packages/flutter/lib/src/material/input_border.dart
Expand Up @@ -243,6 +243,10 @@ class UnderlineInputBorder extends InputBorder {
double gapPercentage = 0.0,
TextDirection? textDirection,
}) {
if (borderSide.style == BorderStyle.none) {
return;
}

if (borderRadius.bottomLeft != Radius.zero || borderRadius.bottomRight != Radius.zero) {
// This prevents the border from leaking the color due to anti-aliasing rounding errors.
final BorderRadius updatedBorderRadius = BorderRadius.only(
Expand Down
14 changes: 14 additions & 0 deletions packages/flutter/test/material/input_decorator_test.dart
Expand Up @@ -9729,4 +9729,18 @@ void main() {
expect(tester.renderObject<RenderBox>(find.text('COUNTER')).size, Size.zero);
});
});

testWidgets('UnderlineInputBorder with BorderStyle.none should not show anything', (WidgetTester tester) async {
// Regression test for https://github.com/flutter/flutter/issues/143746
const InputDecoration decoration = InputDecoration(
enabledBorder: UnderlineInputBorder(
borderSide: BorderSide(style: BorderStyle.none),
borderRadius: BorderRadius.all(Radius.circular(4)),
),
);

await tester.pumpWidget(buildInputDecorator(decoration: decoration));
final RenderBox box = tester.renderObject(find.byType(InputDecorator));
expect(box, isNot(paints..drrect()));
});
}

0 comments on commit 784f19c

Please sign in to comment.