我有一个来自 Firestore 的 Stream,可以写入。但是,当我尝试读取集合中的文档时,如果存在空值,则不会得到任何结果(在 UI 中)。当我使用空字符串创建 GuestBookMessage 对象时,我得到 X 个结果,这些结果对应于数据库中的文档数量。
当 Firestore 中没有 null 属性时,我会得到正确的结果。
我可以做些什么来确保 Dart 中的 firestore 文档属性的 null 安全性吗?
FirebaseAuth.instance.userChanges().listen((user) {
if (user != null) {
_loggedIn = true;
_guestBookSubscription = FirebaseFirestore.instance
.collection('guestbook')
.orderBy('timestamp', descending: true)
.snapshots()
.listen((snapshot) {
_guestBookMessages = [];
for (final document in snapshot.docs) {
String name = document.data()['name'] as String ?? 'Default Name'; // Provide a default value if 'name' is null
String message = document.data()['text'] as String;
_guestBookMessages.add(
GuestBookMessage(
name: name,
message: message,
),
);
}
notifyListeners();
});
} else {
...
}
...
});
我来自 Swift,对 Firebase 缺乏经验(如果有帮助的话)。
要在 Dart 中处理 Firestore 文档中的 null 属性,您可以使用 null 感知运算符,例如 ??和 ?。提供默认值或优雅地处理空值。
例如:
for (final document in snapshot.docs) {
String name = document.data()['name'] as String ?? 'Default Name';
String message = document.data()['text'] as String ?? ''; // Provide an empty string if message is null
_guestBookMessages.add(
GuestBookMessage(
name: name,
message: message,
),
);
}
notifyListeners();