如何解决如何在flutter中检查文档ID是否存在于集合中或不在firebase中
我正在检查我的以下列表中是否存在一个人(id),然后它应该显示取消关注其他“关注”。但是在这里,即使我的以下列表中不存在该人(id),我也会取消关注。 例如:它应该如何工作,当我点击关注按钮时,该用户 ID 将存储在我的 users/myuserid/following/(文档中的那个用户用户 ID)中。
我的代码是
class SaharaWid extends StatefulWidget {
@override
_SaharaWidState createState() => _SaharaWidState();
}
class _SaharaWidState extends State<SaharaWid> {
final String loggedUserid = FirebaseAuth.instance.currentUser.uid;
var mode;
final ref = FirebaseFirestore.instance;
@override
Widget build(BuildContext context) {
return Card(
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(10.0)),elevation: 8,child: StreamBuilder<QuerySnapshot>(
stream: ref
.collection('sahara/MmORK4x2Hx39fs3fPALW/posts')
.orderBy('datetime',descending: true)
.snapshots(),builder: (context,fetchedData) {
if (fetchedData.connectionState == ConnectionState.waiting) {
return Center(child: CircularProgressIndicator());
} else {
// final List<DocumentSnapshot> posts = fetchedData.data!.docs;
return ListView.builder(
itemCount: fetchedData.data.docs.length,itemBuilder: (ctx,index) => Column(
mainAxisAlignment: MainAxisAlignment.end,children: [
GestureDetector(
child: SinglePostwid(
fetchedData.data.docs[index]['post'],fetchedData.data.docs[index]['username'],fetchedData.data.docs[index]['datetime']),onTap: () {
if (loggedUserid ==
fetchedData.data.docs[index]['userid']) {
mode = 'self';
} else {
final getRef = ref
.collection('users/$loggedUserid/following')
.doc(fetchedData.data.docs[index]['userid'])
.get();
if (getRef == null) {
mode = 'Unfollow';
} else {
mode = 'Follow';
}
}
Navigator.of(context)
.pushNamed(OtherProfileScreen.routeName,arguments: {
'userid': fetchedData.data.docs[index]['userid'],'mode': mode,});
},),// Text(fetchedData.data!.docs[index]['post']),LikeCommentWid(),],);
}
},);
}
}
这是我的数据库结构
解决方法
您不是在等待检索数据.. 看看async/await
final bool isFollowing = await ref.collection('users/$loggedUserid/following').doc(fetchedData.data.docs[index]['userid']).get().then((value) => value.exists);
if(isFollowing) // User is Following
else // User is not Following
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。