【问题标题】:check if a specific document exists or no , Flutter Firebase检查特定文档是否存在,Flutter Firebase
【发布时间】:2021-06-15 01:04:01
【问题描述】:

我是 Flutter 和 firebase 的新手,我正在尝试构建一个应用程序,如果他们有类似于我们在 facebook 上看到的“友谊”,则可以显示两个用户的帖子,

但是,当我尝试使用以下逻辑检查文档时:

b

ool friendship =false;
  checkConnection(String target) async{

   await FirebaseFirestore.instance.collection("users").doc(loggedUser.phoneNumber).collection("friendship").where("phoneNumber", isEqualTo: target).get().then((value) {
      if(value.docs.first.exists)
        friendship=true;
        else
        friendship=false;
    });

  }

然后使用streambuilder显示帖子

StreamBuilder(
        stream: FirebaseFirestore.instance.collection("posts").snapshots(),
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            return snapshot.data.docs.length == 0
                ? noPosts()
                : ListView.builder(
                    itemCount: snapshot.data.docs.length,
                    itemBuilder: (context, index) {
                      DocumentSnapshot currentDoc = snapshot.data.docs[index];
                      checkConnection(currentDoc["by"]);
                         friendship?singlePostWidget(currentDoc["by"],currentDoc["context"]):SizedBox();
                    });
          } 

我得到的错误是:

E/flutter (15767): [错误:flutter/shell/common/shell.cc(242)] Dart 未处理的异常:错误状态:无元素,堆栈跟踪:#0
List.first (dart:core-patch/growable_array.dart:332:5) E/flutter (15767):#1 _CommunityState.checkConnection。 (包:connect/Screens/Account/Community/Community.dart:119:21) E/颤振(15767):#2 _RootZone.runUnary (dart:async/zone.dart:1612:54) E/flutter (15767): #3
_FutureListener.handleValue (dart:async/future_impl.dart:152:18) E/flutter (15767): #4
Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:704:45) E/flutter (15767): #5
Future._propagateToListeners (dart:async/future_impl.dart:733:32) E/颤振(15767):#6 Future._completeWithValue (dart:async/future_impl.dart:539:5) E/flutter (15767): #7
_completeOnAsyncReturn (dart:async-patch/async_patch.dart:254:13) E/flutter (15767): #8 Query.get (包:cloud_firestore/src/query.dart)E/flutter(15767): E/颤动​​(15767):

【问题讨论】:

    标签: firebase flutter google-cloud-firestore


    【解决方案1】:

    不要同时使用awaitthen。从第一个代码块中删除 await。

    await 是为了中断流程,直到异步方法完成。 then 但是不会中断流程(意味着将执行下一条指令),而是使您能够在异步方法完成时运行代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-30
      • 1970-01-01
      • 2022-01-05
      相关资源
      最近更新 更多