【发布时间】:2019-01-14 21:53:45
【问题描述】:
如何在长文本小部件中创建换行符?
例如,我正在创建一个关于我自己的传记页面。我想展示三个段落。但是目前,我在一个大的文本小部件中输出这些段落,并且输出没有换行符来区分段落。我该怎么做?
【问题讨论】:
-
您可以在文本内容中使用 /n。 2 ways to break text line content in Flutter
如何在长文本小部件中创建换行符?
例如,我正在创建一个关于我自己的传记页面。我想展示三个段落。但是目前,我在一个大的文本小部件中输出这些段落,并且输出没有换行符来区分段落。我该怎么做?
【问题讨论】:
像这样声明你的文本:
final String someText =
"stuff for the 1st paragraph\n\n"
"stuff for the 2nd paragraph\n\n"
"stuff for the 3rd paragraph\n\n";
然后您可以像往常一样在Text 小部件中渲染它。
【讨论】:
我来到这里是想将代码中的长字符串分成多行。从这个开始:
final longString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
您可以通过执行以下操作使其在代码编辑器中全部可见:
final longString = 'Lorem ipsum dolor sit amet, consectetur adipiscing '
'elit, sed do eiusmod tempor incididunt ut labore et dolore magna '
'aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco '
'laboris nisi ut aliquip ex ea commodo consequat. ';
或者这个:
final longString = 'Lorem ipsum dolor sit amet, consectetur adipiscing ' +
'elit, sed do eiusmod tempor incididunt ut labore et dolore magna ' +
'aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco ' +
'laboris nisi ut aliquip ex ea commodo consequat.';
不影响字符串的内容。也就是说,不会添加换行符。
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。
如果您确实希望保留换行符,则可以使用三引号。
final longString = '''
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed do eiusmod tempor incididunt
ut labore et dolore magna aliqua.
Ut enim ad minim veniam,
quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea
commodo consequat.
''';
产生:
Lorem ipsum dolor sit amet,
consectetur adipiscing elit,
sed 执行 eiusmod 临时事件
ut laboure et dolore magna aliqua。Ut enim ad minim veniam,
quis nostrud 练习 ullamco
Laboris nisi ut aliquip ex ea
commodo consequat。
正如已经提到的,只需在每个段落中添加两个\n 换行符来分隔它们。或者\t标签在开头,换行在结尾。
final paragraph1 = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.';
final paragraph2 = 'Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.';
final text = paragraph1 + '\n\n' + paragraph2;
Lorem ipsum dolor sit amet,consectetur adipiscing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。
如果您要进行大量字符串连接,请考虑使用StringBuffer。
【讨论】:
我假设您已经在原始文本中以某种方式告诉应该有一个换行符,例如\n。如果您的段落类似于:var text = "paragraph1\n\nparagraph2";,您可以执行以下操作:
var split = text.split('\n').map((i) {
if (i == "") {
return Divider();
} else {
return Text(i);
}
}).toList();
var displayElement = Column(children: split);
返回displayElement,它将在每个段落之间有一个分隔元素。
【讨论】: