firebase - Firebase Firestore 新行命令
问题描述
我正在尝试使用新行命令在文本中创建新行。从这个问题看来这是不可能的:New Line Command (\n) Not Working With Firebase Firestore Database Strings
现在还是这样吗?假设是这样,Flutter 是否提供了与以下功能相似的任何方法,可以让我解决这个问题?
label.text = stringRecived.replacingOccurrences(of: "\n", with: "\n")
*更多上下文:这是我输入数据的 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(),
在新的小部件中,我将它作为字符串传递给它,并通过 Text 小部件提供,如下所示:
new Text(
comment,
style: new TextStyle(
color: Color.fromRGBO(74, 74, 74, 1.0),
fontSize: 13.0,
),
),
解决方案
在大多数编程语言中,如果您包含\n
在一个字符串中,它会将这两个字符解释为一个(转义)序列,并且它实际上存储了一个 ASCII 码 10 的不可打印字符。
如果您\n
在 Firestore 控制台中逐字键入文档,它会将确切的文本值存储在字符串中。所以这是两个字符\
和n
。
这两个是不一样的。事实上,如果您想在大多数编程语言中输入字符串中的两个字符序列,您最终会得到"\\n"
. 这是两个反斜杠:第一个开始转义序列,第二个表示它是文字\
,然后是文字n
。
因此,在 Flutter 中,如果您已将文字两个字符存储\n
在一个字符串中,并且希望将其显示为换行符,则需要将字符串解码回单个换行符。幸运的是,这很简单:
yourString.replaceAll("\\n", "\n");
例如,这是我刚刚在应用程序中测试的。我在 Firestore 控制台中的文档显示:
然后我的代码:
var doc = await Firestore.instance.collection("weather").document("sf").get();
var weather = doc.data["condition"]
print(weather);
print(weather.replaceAll("\\n", "\n"));
第一print
条语句打印:
Sunny\nI think
而第二个打印:
Sunny
I think
有趣的事实:当我在 Flutter 中运行这段代码时:
Firestore.instance.collection("weather").document("test").setData({ 'condition': "nice\nand\nsunny" });
它在 Firestore 控制台中显示如下:
所以看起来\n
字符串中的不可打印在控制台中显示为一个空格。我还没有找到在 Firestore 控制台中将换行符输入到字符串中的方法。不过,API 会正确检索换行符,因此这只影响 Firebase 控制台。
推荐阅读
- python - TypeError:需要浮点数
- sql - Laravel 按日期时间格式按小时分组
- spring-boot - Spring config 客户端配置未使用“/actuator/refresh”端点更新
- sql - SQL 查询搜索 itemID = 0 和具有这些 itemID 等的组
- python - Onedrive API:上传特定目录中的文件
- java - javax.sip.SipException:发送请求时发生 IO 异常
- jakarta-ee - JBoss jaas 会话超时
- c++ - 渲染到帧缓冲区只渲染我场景的左下角
- php - Symfony - 导出列名并使用数组
- sql - 如何在 SQL 中按特定条件排序