From f2e66c3ae0d51b401f1b4ca5419640b9b1fe408f Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Thu, 23 Feb 2023 15:52:03 +0000 Subject: [PATCH 1/8] Pass parent TextStyle down to MarkdownElementBuilder.visitElementAfter --- .../example/lib/demos/subscript_syntax_demo.dart | 6 +++++- packages/flutter_markdown/lib/src/builder.dart | 7 +++++-- packages/flutter_markdown/lib/src/widget.dart | 9 ++++++++- packages/flutter_markdown/test/custom_syntax_test.dart | 8 ++++---- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart index 5a6e539a7a38..aa9d9b0130e5 100644 --- a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart +++ b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart @@ -147,7 +147,11 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { + Widget visitElementAfter( + md.Element element, + TextStyle? preferredStyle, + TextStyle? parentStyle, + ) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index e8521136b849..b2810d53a530 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -451,8 +451,11 @@ class MarkdownBuilder implements md.NodeVisitor { } if (builders.containsKey(tag)) { - final Widget? child = - builders[tag]!.visitElementAfter(element, styleSheet.styles[tag]); + final Widget? child = builders[tag]!.visitElementAfter( + element, + styleSheet.styles[tag], + parent.style, + ); if (child != null) { current.children[0] = child; } diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index bfdce3139d1e..2ceeadfb20c8 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -76,8 +76,15 @@ abstract class MarkdownElementBuilder { /// If [MarkdownWidget.styleSheet] has a style of this tag, will passing /// to [preferredStyle]. /// + /// If parent element has [TextStyle]'s set, it will be passed as + /// [parentStyle]. + /// /// If you needn't build a widget, return null. - Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) => + Widget? visitElementAfter( + md.Element element, + TextStyle? preferredStyle, + TextStyle? parentStyle, + ) => null; } diff --git a/packages/flutter_markdown/test/custom_syntax_test.dart b/packages/flutter_markdown/test/custom_syntax_test.dart index 6254a1be990b..23d2ad5b593d 100644 --- a/packages/flutter_markdown/test/custom_syntax_test.dart +++ b/packages/flutter_markdown/test/custom_syntax_test.dart @@ -141,7 +141,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter(md.Element element, _) { + Widget visitElementAfter(md.Element element, _, __) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; @@ -172,7 +172,7 @@ class WikilinkSyntax extends md.InlineSyntax { class WikilinkBuilder extends MarkdownElementBuilder { @override - Widget visitElementAfter(md.Element element, _) { + Widget visitElementAfter(md.Element element, _, __) { return RichText( text: TextSpan( text: element.textContent, @@ -197,7 +197,7 @@ class ContainerSyntax extends md.InlineSyntax { class ContainerBuilder extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, _) { + Widget? visitElementAfter(md.Element element, _, __) { return RichText( text: TextSpan( children: [ @@ -212,7 +212,7 @@ class ContainerBuilder extends MarkdownElementBuilder { class ContainerBuilder2 extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, _) { + Widget? visitElementAfter(md.Element element, _, __) { return RichText( text: TextSpan( children: [ From 8f6047de6686f1e0e0be836caf8eea81c1a82d84 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Fri, 24 Feb 2023 13:22:18 +0000 Subject: [PATCH 2/8] Add BuildContext to the visitElementAfter method --- .../example/lib/demos/subscript_syntax_demo.dart | 1 + packages/flutter_markdown/lib/src/builder.dart | 8 ++++++++ packages/flutter_markdown/lib/src/widget.dart | 1 + packages/flutter_markdown/test/custom_syntax_test.dart | 8 ++++---- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart index aa9d9b0130e5..8c029d7f53b7 100644 --- a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart +++ b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart @@ -148,6 +148,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { @override Widget visitElementAfter( + BuildContext context, md.Element element, TextStyle? preferredStyle, TextStyle? parentStyle, diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index b2810d53a530..bab2b8d602a4 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -74,6 +74,13 @@ class _InlineElement { /// A delegate used by [MarkdownBuilder] to control the widgets it creates. abstract class MarkdownBuilderDelegate { + /// Returns the [BuildContext] of the [MarkdownWidget]. + /// + /// The state will be passed down to the + /// [MarkdownElementBuilder.visitElementBefore] method and allows elements to + /// access the context. + BuildContext get context; + /// Returns a gesture recognizer to use for an `a` element with the given /// text, `href` attribute, and title. GestureRecognizer createLink(String text, String? href, String title); @@ -452,6 +459,7 @@ class MarkdownBuilder implements md.NodeVisitor { if (builders.containsKey(tag)) { final Widget? child = builders[tag]!.visitElementAfter( + delegate.context, element, styleSheet.styles[tag], parent.style, diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 2ceeadfb20c8..f8cf5aedfe3b 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -81,6 +81,7 @@ abstract class MarkdownElementBuilder { /// /// If you needn't build a widget, return null. Widget? visitElementAfter( + BuildContext context, md.Element element, TextStyle? preferredStyle, TextStyle? parentStyle, diff --git a/packages/flutter_markdown/test/custom_syntax_test.dart b/packages/flutter_markdown/test/custom_syntax_test.dart index 23d2ad5b593d..76390a2856b2 100644 --- a/packages/flutter_markdown/test/custom_syntax_test.dart +++ b/packages/flutter_markdown/test/custom_syntax_test.dart @@ -141,7 +141,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter(md.Element element, _, __) { + Widget visitElementAfter(BuildContext context, md.Element element, _, __) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; @@ -172,7 +172,7 @@ class WikilinkSyntax extends md.InlineSyntax { class WikilinkBuilder extends MarkdownElementBuilder { @override - Widget visitElementAfter(md.Element element, _, __) { + Widget visitElementAfter(BuildContext context, md.Element element, _, __) { return RichText( text: TextSpan( text: element.textContent, @@ -197,7 +197,7 @@ class ContainerSyntax extends md.InlineSyntax { class ContainerBuilder extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, _, __) { + Widget? visitElementAfter(BuildContext context, md.Element element, _, __) { return RichText( text: TextSpan( children: [ @@ -212,7 +212,7 @@ class ContainerBuilder extends MarkdownElementBuilder { class ContainerBuilder2 extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, _, __) { + Widget? visitElementAfter(BuildContext context, md.Element element, _, __) { return RichText( text: TextSpan( children: [ From f3770fc0ee88dc7e77a6aeb3eb72926e6bbb7714 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Fri, 24 Feb 2023 14:32:03 +0000 Subject: [PATCH 3/8] Update builder.dart --- packages/flutter_markdown/lib/src/builder.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index bab2b8d602a4..9496f82904ee 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -76,9 +76,9 @@ class _InlineElement { abstract class MarkdownBuilderDelegate { /// Returns the [BuildContext] of the [MarkdownWidget]. /// - /// The state will be passed down to the + /// The context will be passed down to the /// [MarkdownElementBuilder.visitElementBefore] method and allows elements to - /// access the context. + /// get information from the context. BuildContext get context; /// Returns a gesture recognizer to use for an `a` element with the given From de053eb82b034d526f1e6d184e3a893292c5c246 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Tue, 7 Mar 2023 13:17:35 +0000 Subject: [PATCH 4/8] Make it a non-breaking change --- .../example/lib/demos/subscript_syntax_demo.dart | 7 +------ packages/flutter_markdown/lib/src/builder.dart | 2 +- packages/flutter_markdown/lib/src/widget.dart | 16 ++++++++++++++-- .../test/custom_syntax_test.dart | 8 ++++---- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart index 8c029d7f53b7..5a6e539a7a38 100644 --- a/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart +++ b/packages/flutter_markdown/example/lib/demos/subscript_syntax_demo.dart @@ -147,12 +147,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter( - BuildContext context, - md.Element element, - TextStyle? preferredStyle, - TextStyle? parentStyle, - ) { + Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; diff --git a/packages/flutter_markdown/lib/src/builder.dart b/packages/flutter_markdown/lib/src/builder.dart index 9496f82904ee..7eecc54a004e 100644 --- a/packages/flutter_markdown/lib/src/builder.dart +++ b/packages/flutter_markdown/lib/src/builder.dart @@ -458,7 +458,7 @@ class MarkdownBuilder implements md.NodeVisitor { } if (builders.containsKey(tag)) { - final Widget? child = builders[tag]!.visitElementAfter( + final Widget? child = builders[tag]!.visitElementAfterWithContext( delegate.context, element, styleSheet.styles[tag], diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index f8cf5aedfe3b..ad26acc5e1a9 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -80,12 +80,24 @@ abstract class MarkdownElementBuilder { /// [parentStyle]. /// /// If you needn't build a widget, return null. - Widget? visitElementAfter( + Widget? visitElementAfterWithContext( BuildContext context, md.Element element, TextStyle? preferredStyle, TextStyle? parentStyle, - ) => + ) { + return visitElementAfter(element, preferredStyle); + } + + /// Called when an Element has been reached, after its children have been + /// visited. + /// + /// If [MarkdownWidget.styleSheet] has a style of this tag, will passing + /// to [preferredStyle]. + /// + /// If you needn't build a widget, return null. + @Deprecated('Use visitElementAfterWithContext() instead.') + Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) => null; } diff --git a/packages/flutter_markdown/test/custom_syntax_test.dart b/packages/flutter_markdown/test/custom_syntax_test.dart index 76390a2856b2..b83906f9a8c6 100644 --- a/packages/flutter_markdown/test/custom_syntax_test.dart +++ b/packages/flutter_markdown/test/custom_syntax_test.dart @@ -141,7 +141,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter(BuildContext context, md.Element element, _, __) { + Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; @@ -172,7 +172,7 @@ class WikilinkSyntax extends md.InlineSyntax { class WikilinkBuilder extends MarkdownElementBuilder { @override - Widget visitElementAfter(BuildContext context, md.Element element, _, __) { + Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { return RichText( text: TextSpan( text: element.textContent, @@ -197,7 +197,7 @@ class ContainerSyntax extends md.InlineSyntax { class ContainerBuilder extends MarkdownElementBuilder { @override - Widget? visitElementAfter(BuildContext context, md.Element element, _, __) { + Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) { return RichText( text: TextSpan( children: [ @@ -212,7 +212,7 @@ class ContainerBuilder extends MarkdownElementBuilder { class ContainerBuilder2 extends MarkdownElementBuilder { @override - Widget? visitElementAfter(BuildContext context, md.Element element, _, __) { + Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) { return RichText( text: TextSpan( children: [ From 22c6b163ff5906c94d461eca618029188ecde682 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Tue, 7 Mar 2023 13:23:28 +0000 Subject: [PATCH 5/8] Use underscore instead --- packages/flutter_markdown/test/custom_syntax_test.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/flutter_markdown/test/custom_syntax_test.dart b/packages/flutter_markdown/test/custom_syntax_test.dart index b83906f9a8c6..6254a1be990b 100644 --- a/packages/flutter_markdown/test/custom_syntax_test.dart +++ b/packages/flutter_markdown/test/custom_syntax_test.dart @@ -141,7 +141,7 @@ class SubscriptBuilder extends MarkdownElementBuilder { ]; @override - Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { + Widget visitElementAfter(md.Element element, _) { // We don't currently have a way to control the vertical alignment of text spans. // See https://github.com/flutter/flutter/issues/10906#issuecomment-385723664 final String textContent = element.textContent; @@ -172,7 +172,7 @@ class WikilinkSyntax extends md.InlineSyntax { class WikilinkBuilder extends MarkdownElementBuilder { @override - Widget visitElementAfter(md.Element element, TextStyle? preferredStyle) { + Widget visitElementAfter(md.Element element, _) { return RichText( text: TextSpan( text: element.textContent, @@ -197,7 +197,7 @@ class ContainerSyntax extends md.InlineSyntax { class ContainerBuilder extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) { + Widget? visitElementAfter(md.Element element, _) { return RichText( text: TextSpan( children: [ @@ -212,7 +212,7 @@ class ContainerBuilder extends MarkdownElementBuilder { class ContainerBuilder2 extends MarkdownElementBuilder { @override - Widget? visitElementAfter(md.Element element, TextStyle? preferredStyle) { + Widget? visitElementAfter(md.Element element, _) { return RichText( text: TextSpan( children: [ From 1315839b71f8c852c9cb8e92d70c568904e14845 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Tue, 7 Mar 2023 13:29:37 +0000 Subject: [PATCH 6/8] Bump version & changelog --- packages/flutter_markdown/CHANGELOG.md | 7 +++++++ packages/flutter_markdown/pubspec.yaml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index 29e9a363d8c3..8f4048cd3bfd 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,3 +1,10 @@ +## 0.6.15 + +* Introduce a new `MarkdownElementBuilder.visitElementAfterWithContext()` method passing the widget `BuildContext` and + the parent texts' `TextStyle`. + This should allow custom syntax implementations to get data from the current context, as well as properly style any + text, e.g. a color syntax can make parts of a headline colored, while still keeping the font size of the headline. + ## 0.6.14 * Require `markdown: ^7.0.0` diff --git a/packages/flutter_markdown/pubspec.yaml b/packages/flutter_markdown/pubspec.yaml index e554c40a58e6..648f93adb327 100644 --- a/packages/flutter_markdown/pubspec.yaml +++ b/packages/flutter_markdown/pubspec.yaml @@ -4,7 +4,7 @@ description: A Markdown renderer for Flutter. Create rich text output, formatted with simple Markdown tags. repository: https://github.com/flutter/packages/tree/main/packages/flutter_markdown issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+flutter_markdown%22 -version: 0.6.14 +version: 0.6.15 environment: sdk: ">=2.12.0 <3.0.0" From 75adc21166d871b87e2351f70af4c1c95868f018 Mon Sep 17 00:00:00 2001 From: Dennis Kugelmann Date: Tue, 7 Mar 2023 13:54:53 +0000 Subject: [PATCH 7/8] Add test for visitElementAfterWithContext --- .../test/custom_syntax_test.dart | 81 ++++++++++++++++++- 1 file changed, 80 insertions(+), 1 deletion(-) diff --git a/packages/flutter_markdown/test/custom_syntax_test.dart b/packages/flutter_markdown/test/custom_syntax_test.dart index 6254a1be990b..0360a117e423 100644 --- a/packages/flutter_markdown/test/custom_syntax_test.dart +++ b/packages/flutter_markdown/test/custom_syntax_test.dart @@ -3,7 +3,7 @@ // found in the LICENSE file. import 'package:flutter/gestures.dart'; -import 'package:flutter/widgets.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:markdown/markdown.dart' as md; @@ -83,6 +83,34 @@ void defineTests() { expect(widgetSpan.child, isInstanceOf()); }, ); + + testWidgets( + 'visitElementAfterWithContext is handled correctly', + (WidgetTester tester) async { + await tester.pumpWidget( + boilerplate( + Markdown( + data: r'# This is a header with some \color1{color} in it', + extensionSet: md.ExtensionSet.none, + inlineSyntaxes: [InlineTextColorSyntax()], + builders: { + 'inlineTextColor': InlineTextColorElementBuilder(), + }, + ), + ), + ); + + final RichText textWidget = tester.widget(find.byType(RichText)); + final TextSpan rootSpan = textWidget.text as TextSpan; + final TextSpan firstSpan = rootSpan.children![0] as TextSpan; + final TextSpan secondSpan = rootSpan.children![1] as TextSpan; + final TextSpan thirdSpan = rootSpan.children![2] as TextSpan; + + expect(secondSpan.style!.color, Colors.red); + expect(secondSpan.style!.fontSize, firstSpan.style!.fontSize); + expect(secondSpan.style!.fontSize, thirdSpan.style!.fontSize); + }, + ); }); testWidgets( @@ -225,3 +253,54 @@ class ContainerBuilder2 extends MarkdownElementBuilder { ); } } + +// Note: The implementation of inline span is incomplete, it does not handle +// bold, italic, ... text with a colored block. +// This would not work: `\color1{Text with *bold* text}` +class InlineTextColorSyntax extends md.InlineSyntax { + InlineTextColorSyntax() : super(r'\\color([1-9]){(.*?)}'); + + @override + bool onMatch(md.InlineParser parser, Match match) { + final String colorId = match.group(1)!; + final String textContent = match.group(2)!; + final md.Element node = md.Element.text( + 'inlineTextColor', + textContent, + )..attributes['color'] = colorId; + + parser.addNode(node); + + parser.addNode( + md.Text(''), + ); + return true; + } +} + +class InlineTextColorElementBuilder extends MarkdownElementBuilder { + @override + Widget visitElementAfterWithContext( + BuildContext context, + md.Element element, + TextStyle? preferredStyle, + TextStyle? parentStyle, + ) { + final String innerText = element.textContent; + final String color = element.attributes['color'] ?? ''; + + final Map contentColors = { + '1': Colors.red, + '2': Colors.green, + '3': Colors.blue, + }; + final Color? contentColor = contentColors[color]; + + return RichText( + text: TextSpan( + text: innerText, + style: parentStyle?.copyWith(color: contentColor), + ), + ); + } +} From 3972f7cbb6a68fb56f3e9e4b4bb0452199f93dbc Mon Sep 17 00:00:00 2001 From: tarrinneal Date: Thu, 6 Jul 2023 17:29:29 -0700 Subject: [PATCH 8/8] nits --- packages/flutter_markdown/CHANGELOG.md | 8 +++----- packages/flutter_markdown/lib/src/widget.dart | 8 ++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/packages/flutter_markdown/CHANGELOG.md b/packages/flutter_markdown/CHANGELOG.md index 0260b16ccbfa..fa273dbf1152 100644 --- a/packages/flutter_markdown/CHANGELOG.md +++ b/packages/flutter_markdown/CHANGELOG.md @@ -1,11 +1,9 @@ ## 0.6.17 -* Introduce a new `MarkdownElementBuilder.visitElementAfterWithContext()` method passing the widget `BuildContext` and - the parent texts' `TextStyle`. - This should allow custom syntax implementations to get data from the current context, as well as properly style any - text, e.g. a color syntax can make parts of a headline colored, while still keeping the font size of the headline. +* Introduces a new `MarkdownElementBuilder.visitElementAfterWithContext()` method passing the widget `BuildContext` and + the parent text's `TextStyle`. - ## 0.6.16 +## 0.6.16 * Adds `tableVerticalAlignment` property to allow aligning table cells vertically. diff --git a/packages/flutter_markdown/lib/src/widget.dart b/packages/flutter_markdown/lib/src/widget.dart index 42f4aa03ca86..65dc983d10ed 100644 --- a/packages/flutter_markdown/lib/src/widget.dart +++ b/packages/flutter_markdown/lib/src/widget.dart @@ -73,13 +73,13 @@ abstract class MarkdownElementBuilder { /// Called when an Element has been reached, after its children have been /// visited. /// - /// If [MarkdownWidget.styleSheet] has a style of this tag, will passing - /// to [preferredStyle]. + /// If [MarkdownWidget.styleSheet] has a style with this tag, it will be + /// passed as [preferredStyle]. /// - /// If parent element has [TextStyle]'s set, it will be passed as + /// If parent element has [TextStyle] set, it will be passed as /// [parentStyle]. /// - /// If you needn't build a widget, return null. + /// If a widget build isn't needed, return null. Widget? visitElementAfterWithContext( BuildContext context, md.Element element,