flutter_markdown多个换行符不工作

23c0lvtd  于 2023-06-24  发布在  Flutter
关注(0)|答案(9)|浏览(151)

我正在尝试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";

输出为

有人能帮我这个线路中断或任何替代包。

83qze16e

83qze16e1#

看看下面的链接!!
在此处输入链接说明
br标记不起作用,因此使用3反斜杠+ n代替br标记

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

tgabmvqs2#

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

您可以利用使用三重撇号来添加垂直空间。
这是一个令人讨厌的变通方法,但到目前为止找不到更好的方法来增加垂直空间。

tv6aics1

tv6aics13#

一个体面的工作周围。
Flutter_markdown包中添加了一个新功能,名为paddingBuilders,版本0.6.8。你可以添加填充到所有可用的块在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:填充不适用于内联标签。仅块标签适用。

s1ag04yj

s1ag04yj4#

<br>替换为\x03,如下所示。\x03是ASCII中的文本结尾(ETX):

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

mlnl4t2r5#

您好,我找到了这个包裹https://pub.dev/packages/markdown_widget
这不是一个完全的解决方案,但是这个包支持一些HTML标签,比如<\br>,在这个例子中,我在markdown中添加了这个标签,并且工作了

g52tjvyc

g52tjvyc6#

只需添加'
\

u2028'作为换行符。这是Unicode字符'LINE SEPARATOR'

3b6akqbq

3b6akqbq7#

我的解决方案,当使用String单行时,不使用“””或''',使用\n与2空格以下代码显示相同的UI
var _markdownSingleLine = 'Demo \n Break \n line';
var _markdownMultiLine ='''演示
休息
line '';
Demo break line

70gysomp

70gysomp8#

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

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

bn31dyow9#

所有给定的解决方案都不适用于我的用例。我有一个文本,其中一个新行被标记为\n。如果要插入\n\n,则出现问题。我解决了这个问题如下:

text.replaceAll('\n\n', '''
\n
\u200B 
\n
'''
);

这插入了一个零宽度的空间,这足以让我有两个新行。

相关问题