【发布时间】:2020-08-23 08:22:02
【问题描述】:
您好,我正在尝试创建一个可见性小部件,用于显示用户是否在 Firebase 数据库阵列上。看起来像这样(成员数组):
如你所见,我创建了一个 StreamBuilder,如果当前用户的用户名在这个数组上,它应该返回 Visibility 小部件:
StreamBuilder<QuerySnapshot>(
stream: _firestore.collection('chats').snapshots(),
builder: (context, snapshot){
if(!snapshot.hasData){
}else {
final chats = snapshot.data.documents;
List<ChatCard> chatCards = [];
for (var chat in chats) {
final String nameOfChat = chat.data['name'];
final String lastMessageSent = chat.data['lastMessageSent'];
final List members = chat.data['members'];
final ChatCard chatCard = ChatCard(
nameOfChat: nameOfChat ?? '',
lastMessageSent: lastMessageSent ?? '',
);
chatCards.add(chatCard);
}
return Visibility(
visible: checkIfOnAnyChats(),
child: Expanded(
child: ListView(
children: chatCards,
),
),
);
}
}
),
这就是“checkIfOnAnyChats()”未来的样子:
Future<bool> checkIfOnAnyChats() async {
FirebaseUser user = await _auth.currentUser();
final QuerySnapshot result = await _firestore
.collection('chats')
.where('members', arrayContains: _username)
.getDocuments();
final List<DocumentSnapshot> documents = result.documents;
if(documents.length > 0) {
setState(() {
return true;
});
}else{
setState(() {
return false;
});
}
}
我正在尝试将此值分配给“可见”布尔值,但它不起作用,因为它是 未来布尔值,而不是普通布尔值。
有什么建议吗?
谢谢。
【问题讨论】: