长文本颤动中的换行符

HDi*_*ond 8 dart flutter

如何在长文本小部件内创建换行符?

例如,我正在创建有关我自己的传记页面。我想展示三段。但是目前,我正在一个大型Text Widget中输出这些段落,并且输出中没有换行符以区分这些段落。我怎样才能做到这一点?

Sur*_*gch 21

我来这里是想将代码中的长字符串分成多行。从这个开始:

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.';
Run Code Online (Sandbox Code Playgroud)

多行不换行

您可以通过执行以下操作使其在代码编辑器中全部可见:

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. ';
Run Code Online (Sandbox Code Playgroud)

或这个:

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.';
Run Code Online (Sandbox Code Playgroud)

不影响字符串的内容。也就是说,不会添加换行符。

Lorem ipsum dolor sat 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.
''';
Run Code Online (Sandbox Code Playgroud)

它产生:

Lorem ipsum dolor sat 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。

分割段落

如前所述,只需\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;
Run Code Online (Sandbox Code Playgroud)

Lorem ipsum dolor sat 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.

也可以看看


bla*_*eil 10

像这样声明您的文本:

final String someText = 
"stuff for the 1st paragraph\n\n"
"stuff for the 2nd paragraph\n\n"
"stuff for the 3rd paragraph\n\n";
Run Code Online (Sandbox Code Playgroud)

然后您可以像平常一样将其呈现在Text小部件内部。


Rin*_*gil 5

我假设您在原始文本中已经有某种方式来告诉应该有一个换行符,例如\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);
Run Code Online (Sandbox Code Playgroud)

返回displayElement,每个段落之间将有一个分隔符元素。