我正在尝试从Flutter中的Firebase实时数据库返回的DataSnapshot中获取“文本”。
查看此屏幕截图以了解其外观:
下面的代码工作正常,但由于forEach回调函数,它返回null。
如何获取text的值,以便可以在返回Future
的函数中正确返回它。
Future<String> getLastMessageOfConversation(String uid) async {
DataSnapshot dataSnapshot = await FirebaseDatabase.instance
.reference()
.child(ChatService.PRIVATE_CHAT)
.child(uid)
.limitToLast(1)
.once();
if (dataSnapshot.value != null) {
dataSnapshot.value.forEach(
(index, data) {
MessageModel messageModel = MessageModel.fromJson(data);
return messageModel.text;
},
);
} else
return "";
}
最佳答案
您正在尝试从forEach循环的匿名函数返回内容。它不会将数据返回给getLastMessageOfConversation函数。 Tha就是为什么返回null的原因。
检查此代码。
Future<String> getLastMessageOfConversation(String uid) async {
DataSnapshot dataSnapshot = await FirebaseDatabase.instance
.reference()
.child(ChatService.PRIVATE_CHAT)
.child(uid)
.limitToLast(1)
.once();
String message = '';
if (dataSnapshot.value != null) {
dataSnapshot.value.forEach(
(index, data) {
MessageModel messageModel = MessageModel.fromJson(data);
message = messageModel.text;
},
);
}
return message;
}
关于flutter - 如何解析Flutter中limitToLast返回的DataSnapshot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62999291/