微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在flutter中检查文档ID是否存在于集合中或不在firebase中

如何解决如何在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(),],);
          }
        },);
  }
}

这是我的数据库结构

this is my database structure

解决方法

您不是在等待检索数据.. 看看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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?