当来自 Firebase 时,颤动文本输出不抛出段落行
Posted
技术标签:
【中文标题】当来自 Firebase 时,颤动文本输出不抛出段落行【英文标题】:Flutter text output not throwing paragraph line when comes from Firebase 【发布时间】:2020-06-01 00:49:13 【问题描述】:我有一个 Text 小部件,其中包含 \n\n 以在段落更改时抛出一个空行:
Text('Sibling Rivalry \n\n some more text\n\n> and even more text')
这可以正常工作并在定义 \n\n 的位置打印空白行。但是,当我尝试输出完全相同的文本但从 Cloud Firestore 检索时,不会抛出空行。
这是加载代码:
final extracted = await _firestore
.collection('items')
.where("active", isEqualTo: true)
.orderBy("playCount", descending: true)
.getDocuments();
extracted.documents.forEach(
(mediaData)
if (mediaData['itemType'] == 'V')
loadedMedia.add(
MediaItem(
// load fields for VIDEO,
title: mediaData['title'],
description: mediaData['description'],
itemCatCode: mediaData['itemCatCode'],
imageUrl: mediaData['imageUrl'],
itemUrl: mediaData['itemUrl'],
itemType: mediaData['itemType'],
),
);
然后我尝试通过相同的 Text 小部件将其输出到屏幕:
Text(mediaItem.description),
顺便说一句,我将文本直接输入到 Firestore 中,并且描述字段在 Firestore 中定义为字符串。我不知道为什么 /n/n 没有被识别为来自 Firestore 的字符串看起来与上面的硬编码字符串完全相同。
非常感谢您对此提供的任何帮助,因为在最终的应用程序中,有很多文本和很多段落。
【问题讨论】:
【参考方案1】:Firestore 不支持字符串值中的任何转义序列。如果你在一个字符串中写“\n”,当你阅读它时,你会得到完全正确的结果。如果您需要存储一些特殊的东西,您可能需要自己编码和解码。
只需使用 mediaItem.description 将“\n”替换为:“\n”(如果您使用 \n 创建了字符串)
您可以尝试另一件事 mediaItem.description 将“\\n
”替换为:“\n”(如果它是使用某些文本区域等自动创建的)
【讨论】:
我试过了:final _reformattedDescription = mediaItem.description.replaceAll("\n", "\n");然后:文本(_reformattedDescription)。但是屏幕上仍然只有一行带有 \n 试试 mediaItem.description.replaceAll("\\n", "\n") 其实我发现重要的是你提到的双\\。这确实是个问题。对其他人来说很好的学习:所有解决方案拆分,替换等都应该遵循,例如mediaItem.description.replaceAll("\\n, "\n")。感谢您的帮助。 欢迎@Kitcc。以上是关于当来自 Firebase 时,颤动文本输出不抛出段落行的主要内容,如果未能解决你的问题,请参考以下文章