Firebase Firestore 新行命令

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 字符串

然后我使用未来的构建器从 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)

当它出现时,它仍然在字符串中包含 \n。 从控制台

Fra*_*len 35

在大多数编程语言中,如果你包含\n在一个字符串中,它会将两个字符解释为一个(转义)序列,并且它实际上存储了一个带有 ASCII 代码 10 的不可打印字符。

如果您\n在 Firestore 控制台中按字面意思键入文档,它会将确切的文字值存储在字符串中。所以这是两个字符\n

这两个不一样。事实上,如果你想在大多数编程语言中的字符串中输入两个字符的序列,你最终会得到"\\n". 这是两个反斜杠:第一个开始转义序列,第二个表示它是一个字面量\,然后是一个字面量n

因此,在 Flutter 中,如果您已将两个字面量字符存储\n在一个字符串中,并且希望将其显示为换行符,则需要将该字符串解码回单个换行符。幸运的是,这很简单:

yourString.replaceAll("\\n", "\n");
Run Code Online (Sandbox Code Playgroud)

例如,这是我刚刚在一个应用程序中测试的内容。我在 Firestore 控制台中的文档显示:

Firestore 控制台中文档中的文字两字符 <code>\n</code> 序列

然后我的代码:

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 控制台中显示如下:

无法打印的换行符在 Firestore 控制台中显示为空格

所以看起来\n字符串中的不可打印在控制台中显示为一个空格。我还没有找到在 Firestore 控制台中将换行符输入到字符串中的方法。


小智 9

我知道旧线程,但对于任何在这里绊倒的人......

如果您\n在文本块中传递给 Firestore,如果您在 Firebase 控制台中查找它,您确实不会看到它。它仍然存在。为了使新行white-space: pre-wrap生效,您需要做的就是将css应用到正在呈现文本的元素。