作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有几个问题(我是 Dart 的新手)w.r.t 我在下面找到的代码。我想要达到的目标:1) 错误多写在括号内一行。但我收到错误提示“set literals were supported up to 2.2 ....”。知道可能的错误列表也很好,这样我就可以相应地提醒用户。
2) 增加一个与文档数量相关的计数器,并将文档 ID 保存在一个变量中,如果找到多个文档,则覆盖最后一个值。我正在尝试检查是否应该只有一个文档,并在计数器变为 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 语句没有返回任何 future ,所以我收到一条警告,只能将 await 用于 future 。
最佳答案
我将尝试解决您问题中我能理解的尽可能多的问题。如果您有任何其他问题,您可能应该提出另一个问题。
设置文字:匿名函数的语法是 () {}
而不是 () => {}
。< br/>() =>
是一种返回单个表达式值的简写语法,在您的情况下,您在匿名函数中返回一个 Set
因为 {}
创建 Set
(或 Map
,如果其中有冒号)。
解决方案是 (error) { ... }
。
您打印您的gpCounter
值同步,但是,您正在收听Stream
.
因此,您应该将 print
语句移动到您的 listen
函数中:
.listen(data) {
print('Counter: ${data.documents.length}');
})
关于firebase - 如何在 Cloud Firestore 中使用 Stream 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57346355/
我是一名优秀的程序员,十分优秀!