![](/img/trans.png)
[英]I'm trying to get data from firebase but flutter is showing null safety error on StreamBuilder
[英]Trying to get and arrange data from firebase
我正在尝试将从 firebase 获得的聊天安排到对象中。 我得到聊天记录,然后尝试将其安排到一个包含聊天对象和接收者的对象中。
此代码安排聊天,但仅在我刷新 expo 应用程序后才这样做。 上网查了一下,是因为用户和聊天都是状态,到时候还没有设置。
useEffect(() => {
const chatsSub = onSnapshot(collection(firestore, "Chats"), querySnapshot => {
const data = []
querySnapshot.forEach((doc) => {
data.push(doc.data())
});
console.log("Chats: ", data);
setChats(data)
const list = []
chats.forEach(chat => {
if (chat.members.includes(userId)) {
chat.members.forEach(y => {
if (y !== userId) {
console.log("receiver: " + y)
users.forEach(z => {
if (z.id === y) {
console.log(z)
list.push({
chat: chat,
acc: z,
user: user
})
}
})
console.log(list)
}
})
}
})
setUserChats(list)
console.log("Users Chats: " + userChats)
});
}, [])
但是当我尝试获取用户和聊天时,我正在尝试安排用户聊天。 但是这段代码不起作用。 它只是抛出一个错误 instea
useEffect(() => {
const list = []
doc.data().chatList.forEach(chatId => {
const chatSub = onSnapshot(doc(firestore, "Chats", chatId), (doc1) => {
doc1.data().members.forEach(member => {
if (member !== userId){
const userSub = onSnapshot(doc(firestore, "Users", member), (doc2) => {
list.push({
chat: doc1.data(),
acc: doc2.data()
})
})
}
})
})
})
setUserChats(list)
}, [])
我不知道是不是因为我不能在另一个 onSnapshot 中有一个 onSnapshot
一旦更新了两个状态值,您就可以构建聊天列表。 将构建聊天列表的逻辑移动到 useEffect 挂钩中,并为聊天和用户状态添加依赖项。
参考下面的代码。
useEffect(() => {
if (chats.length && users.length) {
const list = [];
chats.forEach((chat) => {
if (chat.members.includes(userId)) {
chat.members.forEach((y) => {
if (y !== userId) {
console.log("receiver: " + y);
users.forEach((z) => {
if (z.id === y) {
console.log(z);
list.push({
chat: chat,
acc: z,
user: user
});
}
});
console.log(list);
}
});
}
});
setUserChats(list);
}
}, [chats, users]);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.