Changing RenderEditable.textAlign doesn't break hot reload anymore (#44605)
diff --git a/packages/flutter/lib/src/rendering/editable.dart b/packages/flutter/lib/src/rendering/editable.dart index 0bba28f..2a3cd83 100644 --- a/packages/flutter/lib/src/rendering/editable.dart +++ b/packages/flutter/lib/src/rendering/editable.dart
@@ -637,7 +637,7 @@ if (_textPainter.textAlign == value) return; _textPainter.textAlign = value; - markNeedsPaint(); + markNeedsTextLayout(); } /// The directionality of the text.
diff --git a/packages/flutter/test/rendering/editable_test.dart b/packages/flutter/test/rendering/editable_test.dart index b1cd433..3c74861 100644 --- a/packages/flutter/test/rendering/editable_test.dart +++ b/packages/flutter/test/rendering/editable_test.dart
@@ -179,6 +179,30 @@ expect(editable, paintsExactlyCountTimes(#drawRRect, 0)); }, skip: isBrowser); + test('Can change textAlign', () { + final TextSelectionDelegate delegate = FakeEditableTextState(); + + final RenderEditable editable = RenderEditable( + textAlign: TextAlign.start, + textDirection: TextDirection.ltr, + offset: ViewportOffset.zero(), + textSelectionDelegate: delegate, + text: const TextSpan(text: 'test'), + startHandleLayerLink: LayerLink(), + endHandleLayerLink: LayerLink(), + ); + + layout(editable); + + editable.layout(BoxConstraints.loose(const Size(100, 100))); + expect(editable.textAlign, TextAlign.start); + expect(editable.debugNeedsLayout, isFalse); + + editable.textAlign = TextAlign.center; + expect(editable.textAlign, TextAlign.center); + expect(editable.debugNeedsLayout, isTrue); + }); + test('Cursor with ideographic script', () { final TextSelectionDelegate delegate = FakeEditableTextState(); final ValueNotifier<bool> showCursor = ValueNotifier<bool>(true);