diff --git a/lib/widgets/content.dart b/lib/widgets/content.dart index eb91d3811..6a22e31fe 100644 --- a/lib/widgets/content.dart +++ b/lib/widgets/content.dart @@ -1140,7 +1140,10 @@ class _InlineContentBuilder { assert(recognizer != null); _pushRecognizer(recognizer); final result = _buildNodes(node.nodes, - style: TextStyle(color: ContentTheme.of(_context!).colorLink)); + style: TextStyle( + color: ContentTheme.of(_context!).colorLink, + decoration: TextDecoration.underline, + decorationColor: ContentTheme.of(_context!).colorLink)); _popRecognizer(); return result; diff --git a/test/widgets/content_test.dart b/test/widgets/content_test.dart index 0f85c0ac3..916726f03 100644 --- a/test/widgets/content_test.dart +++ b/test/widgets/content_test.dart @@ -1426,6 +1426,16 @@ void main() { .single.equals((url: Uri.parse('file:///etc/bad'), mode: LaunchMode.platformDefault)); checkErrorDialog(tester, expectedTitle: 'Unable to open link'); }); + + testWidgets('link is underlined', (tester) async { + await prepare(tester, '

hello

'); + + final richText = tester.widget(find.text('hello', findRichText: true)); + final style = mergeSpanStylesOuterToInner(richText.text, + (span) => span is TextSpan && span.text == 'hello'); + + check(style!.decoration).equals(TextDecoration.underline); + }, variant: const TargetPlatformVariant({TargetPlatform.android, TargetPlatform.iOS})); }); group('LinkNode on internal links', () {