flutter_markdown 多个换行符不起作用

flutter_markdown multiple line breaks not working

我正在尝试 flutter_markdown 包来标记一些内容。但是对于多个换行符它不能正常工作。

 String exampleData="\n\nLine 1. \n\nLine2.\n\n\n\n### Heading \n\nLine3";
 Markdown(data: exampleData,)

输出为

我试过使用换行符“
”,但没用

 String exampleData="Line 1. \n\nLine2. <br /> <br /> \n\n### Heading \n\nLine3";

输出是

谁能帮我解决这个换行符或任何替代包。

我发现了一个讨厌的技巧(不是解决方案),在这种特定情况下可能会有帮助。我不推荐它,但到目前为止找不到使用 flutter_markdown 的任何其他解决方法,而且我也找不到任何其他替代包。

您可以利用三重撇号添加垂直 space。

这是一个糟糕的解决方法,但到目前为止找不到更好的方法来添加垂直 space。

查看下方 link!!

enter link description here

br 标签无效,因此使用 3 个反斜杠 + n 代替 br 标签

String exampleData="Line 1. \\nLine2. \\n## Heading \\nLine3";

像这样用 \x03 替换你的 <br>\x03 是 ASCII 中文本 (ETX) 的结尾:

text.replaceAll('<br>', '\x03');

体面的工作。

从版本 0.6.8 开始,在名为 paddingBuildersFlutter_markdown 包中添加了一项新功能。您可以向降价中的所有可用块添加填充,如下所示。

MarkdownBody(
  data: markDown,
  paddingBuilders: <String,
  MarkdownPaddingBuilder>{
    'p': PPaddingBuilder(),
    'h3': H3PaddingBuilder(),
  },
)

您必须在其中定义填充生成器,如下所示。

class PPaddingBuilder extends MarkdownPaddingBuilder {
  @override
  EdgeInsets getPadding() => const EdgeInsets.only(top: SGSpacing.xlarge);
}

class H3PaddingBuilder extends MarkdownPaddingBuilder {
  @override
  EdgeInsets getPadding() => const EdgeInsets.only(top: SGSpacing.xxlarge);
}

Flutter_markdown 中所有可用的 blockTag 源代码列表如下:

const List<String> _kBlockTags = <String>[
  'p',
  'h1',
  'h2',
  'h3',
  'h4',
  'h5',
  'h6',
  'li',
  'blockquote',
  'pre',
  'ol',
  'ul',
  'hr',
  'table',
  'thead',
  'tbody',
  'tr'
];

PS:填充对内联标签不起作用。仅块标记适用。

您好,我找到了这个包 https://pub.dev/packages/markdown_widget

这不是一个完整的解决方案,但这个包支持一些标签 os html,比如 <\br>,在这种情况下,我在 markdown 中添加了那个标签并且有效

我的解决方案,当使用String单行时,不使用"""或''',使用\n和2 space 下面的代码显示相同 UI

var _markdownSingleLine = 'Demo \n Break \n line';

var _markdownMultiLine = ''' Demo
Break
line ''';

Demo break line

根据 now deleted issue,flutter_markdown 支持在行尾使用反斜杠的显式换行符。使用此语法,您的示例将是:

\
\
Line 1.\
\
Line2.\
\
\
\
### Heading
\
Line3