我有几个问题(我是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用于将来。
答案 0 :(得分:1)
在您的问题中,我将尽力解决所有我能理解的问题。如果还有其他问题,您可能应该问另一个问题。
设置文字:匿名函数的语法为() {}
,而不是() => {}
。
() =>
是一种返回单个表达式值的简写语法,在您的情况下,您将在匿名函数中返回Set
,因为{}
创建Set
的(或Map
(如果您在其中有冒号)。
解决方案是(error) { ... }
。
您同步打印您的gpCounter
值,但是,您正在收听Stream
。
因此,您应该将print
语句移至listen
函数:
.listen(data) {
print('Counter: ${data.documents.length}');
})