如何在Cloud Firestore中使用流回调

时间:2019-08-04 11:57:26

标签: firebase flutter dart google-cloud-firestore

我有几个问题(我是Dart的新手),找不到下面的代码。我想要达到的目标: 1)在括号中写多行以防错误。但是我收到错误消息,说“设置文字最多支持2.2 ....”。知道可能的错误列表也是一件好事,这样我就可以相应地提醒用户。

2)增加一个与文档数量有关的计数器,如果发现多个文档,则通过覆盖最后一个值,将其存储在一个变量中。我正在尝试检查是否只有一个文档,如果计数器转到2,则采取措施。

void _checkIfAdmin() {
Firestore.instance
    .collection('Admin')
    .where('Email', isEqualTo: widget._user.email)
    .snapshots()
    .handleError((error)=>{
      //
      })
    .listen((data) => data.documents.forEach((doc) => gpCounter+=1)); // Store document id?
print('Counter: $gpCounter');

}

当我知道其中有两个文档时,这里正在打印gpCounter = 0。我尝试在该函数中添加async / await,但似乎firebase语句不返回任何将来,因此我收到警告,仅将await用于将来。

1 个答案:

答案 0 :(得分:1)

在您的问题中,我将尽力解决所有我能理解的问题。如果还有其他问题,您可能应该问另一个问题。

  1. 设置文字:匿名函数的语法为() {},而不是() => {}
    () =>是一种返回单个表达式值的简写语法,在您的情况下,您将在匿名函数中返回Set,因为{}创建Set的(或Map(如果您在其中有冒号)。
    解决方案是(error) { ... }

  2. 同步打印您的gpCounter值,但是,您正在收听Stream
    因此,您应该将print语句移至listen函数:

    .listen(data) {
        print('Counter: ${data.documents.length}');
      })