PJQ*_*Jag 13 firebase flutter google-cloud-firestore
我正在尝试使用换行命令在文本中创建新行。从这个问题看来,这是不可能的:New Line Command (\n) Not Working With Firebase Firestore Database Strings
现在还是这样吗?假设是这样,Flutter 是否提供了与以下功能类似的任何方法来解决这个问题?
label.text = stringRecived.replacingOccurrences(of: "\n", with: "\n")
Run Code Online (Sandbox Code Playgroud)
*更多上下文:这是我输入数据的 Firestore 字符串的图片。

然后我使用未来的构建器从 Firestore 调用它,然后将字符串(在本例中为注释)传递给另一个小部件。
return new SocialFeedWidget(
filter: false,
articleID: document['article'],
article_header: document['article_title'],
userName: document['author'],
spectrumValue: document['spectrum_value'].toDouble(),
comment: document['comment'],
fullName: document['firstName'] + " " + document['lastName'],
user_id: document['user_id'],
postID: document.documentID,
posterID: userID,
);
}).toList(),
Run Code Online (Sandbox Code Playgroud)
在新的小部件中,我将它作为字符串传入并通过 Text 小部件提供,如下所示:
new Text(
comment,
style: new TextStyle(
color: Color.fromRGBO(74, 74, 74, 1.0),
fontSize: 13.0,
),
),
Run Code Online (Sandbox Code Playgroud)
Fra*_*len 35
在大多数编程语言中,如果你包含\n在一个字符串中,它会将两个字符解释为一个(转义)序列,并且它实际上存储了一个带有 ASCII 代码 10 的不可打印字符。
如果您\n在 Firestore 控制台中按字面意思键入文档,它会将确切的文字值存储在字符串中。所以这是两个字符\和n。
这两个不一样。事实上,如果你想在大多数编程语言中的字符串中输入两个字符的序列,你最终会得到"\\n". 这是两个反斜杠:第一个开始转义序列,第二个表示它是一个字面量\,然后是一个字面量n。
因此,在 Flutter 中,如果您已将两个字面量字符存储\n在一个字符串中,并且希望将其显示为换行符,则需要将该字符串解码回单个换行符。幸运的是,这很简单:
yourString.replaceAll("\\n", "\n");
Run Code Online (Sandbox Code Playgroud)
例如,这是我刚刚在一个应用程序中测试的内容。我在 Firestore 控制台中的文档显示:
然后我的代码:
var doc = await Firestore.instance.collection("weather").document("sf").get();
var weather = doc.data["condition"]
print(weather);
print(weather.replaceAll("\\n", "\n"));
Run Code Online (Sandbox Code Playgroud)
第一个print语句打印:
Sunny\nI think
而第二个打印:
Sunny
I think
有趣的事实:当我在 Flutter 中运行这段代码时:
Firestore.instance.collection("weather").document("test").setData({ 'condition': "nice\nand\nsunny" });
Run Code Online (Sandbox Code Playgroud)
它在 Firestore 控制台中显示如下:
所以看起来\n字符串中的不可打印在控制台中显示为一个空格。我还没有找到在 Firestore 控制台中将换行符输入到字符串中的方法。
小智 9
我知道旧线程,但对于任何在这里绊倒的人......
如果您\n在文本块中传递给 Firestore,如果您在 Firebase 控制台中查找它,您确实不会看到它。它仍然存在。为了使新行white-space: pre-wrap生效,您需要做的就是将css应用到正在呈现文本的元素。
| 归档时间: |
|
| 查看次数: |
7033 次 |
| 最近记录: |