我收到錯誤“NoSuchMethodError:在 null 上呼叫了方法 '[]'。” 從我的資訊流中。我嘗試多次更改我的代碼并添加列印陳述句,這些陳述句可以正確列印,但我的 Stream 最終回傳一個錯誤,這是來自主題行的錯誤。知道為什么嗎?如何修復錯誤?
這是列印資料陳述句的結果:
資料:
{
userId1: 59jTMEbvqFd8C8UhInksauAVNk63,
userId2: 2ssfDEPhPhcIwInUWdlm0ReH5RZ2,
latestMessageTime: Timestamp(seconds=1667140814, nanoseconds=334000000),
lastMessageSenderId: 59jTMEbvqFd8C8UhInksauAVNk63,
created_at: 2022-10-26 19:44:13.793275,
latestMessage: TEST 3,
roomId: Qv30s8kATJbFJIWRdBEo
}
.
Stream<RoomsListModel> roomsStream() async* {
try {
// get all active chats
var rooms = await FirebaseFirestore.instance
.collection("rooms")
.where("users", arrayContains: userId)
.orderBy("latestMessageTime", descending: true)
.snapshots();
print("rooms: $rooms");
// get Other user details
await for (var room in rooms) {
for (var doc in room.docs) {
var data = doc.data() as Map<String, dynamic>;
print("data: $data");
var otherUser = await getOtherUser(
data["users"][0] == userId ? data["users"][1] : data["users"][0]);
print("otherUser: $otherUser");
yield RoomsListModel(
roomId: doc.id,
userId: otherUser["user id"],
avatar: otherUser["photoUrl"],
name: otherUser["name"],
lastMessage: data["latestMessage"],
lastMessageTime: data["latestMessageTime"]);
}
}
} catch (e) {
print("Error: $e");
}
}
.
Future getOtherUser(String id) async {
// get other user profile
var user = await FirebaseFirestore.instance
.collection("users")
.doc(id)
.get()
.then((value) => value.data()) as Map<String, dynamic>;
// return other user profile
return user;
}
uj5u.com熱心網友回復:
改變這個:
var otherUser = await getOtherUser(
data["users"][0] == userId ? data["users"][1] : data["users"][0]);
對此:
var otherUser = await getOtherUser(
data["userId1"] == userId ? data["userId2"] : data["userId1"]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527063.html
標籤:Google Cloud Collective 安卓扑镖谷歌云火库
上一篇:流不回傳任何值
