Skip to content

Commit 680a7bc

Browse files
authored
SelectableText.rich: Fix TextSpan.style not merged into default text style (#101911)
Properly merges the TextSpan.style of SelectableText.rich.
1 parent d1141aa commit 680a7bc

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

packages/flutter/lib/src/material/selectable_text.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -664,7 +664,7 @@ class _SelectableTextState extends State<SelectableText> implements TextSelectio
664664
final DefaultTextStyle defaultTextStyle = DefaultTextStyle.of(context);
665665
TextStyle? effectiveTextStyle = widget.style;
666666
if (effectiveTextStyle == null || effectiveTextStyle.inherit) {
667-
effectiveTextStyle = defaultTextStyle.style.merge(widget.style);
667+
effectiveTextStyle = defaultTextStyle.style.merge(widget.style ?? _controller._textSpan.style);
668668
}
669669
if (MediaQuery.boldTextOverride(context)) {
670670
effectiveTextStyle = effectiveTextStyle.merge(const TextStyle(fontWeight: FontWeight.bold));

packages/flutter/test/widgets/selectable_text_test.dart

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5052,4 +5052,24 @@ void main() {
50525052
expect(find.text('Regular Text', skipOffstage: false), findsOneWidget);
50535053
expect(find.byType(SelectableText, skipOffstage: false), findsOneWidget);
50545054
});
5055+
5056+
testWidgets('SelectableText text span style is merged with default text style', (WidgetTester tester) async {
5057+
// This is a regression test for https://github.com/flutter/flutter/issues/71389
5058+
5059+
const TextStyle textStyle = TextStyle(color: Color(0xff00ff00), fontSize: 12.0);
5060+
5061+
await tester.pumpWidget(
5062+
const MaterialApp(
5063+
home: SelectableText.rich(
5064+
TextSpan(
5065+
text: 'Abcd',
5066+
style: textStyle,
5067+
),
5068+
),
5069+
),
5070+
);
5071+
5072+
final EditableText editableText = tester.widget(find.byType(EditableText));
5073+
expect(editableText.style.fontSize, textStyle.fontSize);
5074+
});
50555075
}

0 commit comments

Comments
 (0)