每个回路的颤振不';不要等待其他firebase读数的结果
这是我的密码每个回路的颤振不';不要等待其他firebase读数的结果,firebase,flutter,firebase-realtime-database,Firebase,Flutter,Firebase Realtime Database,这是我的密码 data.forEach((index, data) async { String id=data['LampId']; print(id); var _firebaseRef2 = FirebaseDatabase.instance.reference().child('lamps').child(id); await _firebaseRef2.once().then((DataSnapshot snapshot) asy
data.forEach((index, data) async {
String id=data['LampId'];
print(id);
var _firebaseRef2 = FirebaseDatabase.instance.reference().child('lamps').child(id);
await _firebaseRef2.once().then((DataSnapshot snapshot) async {
print(snapshot.value["Owner"]);
if(snapshot.value["Owner"]==Data.userid){
item.add({"key": index, ...data});
}else{
print("no");
}
});
});
return ListView.builder (
itemCount: item.length,
itemBuilder: (context, index) {
Display Cards
我想检查该id是否为所有者,然后添加到列表中,但碰巧foreach id先打印,然后再进行其他firebase检查
如果我解释得更精确些,这就是打印出来的结果
I/flutter (15436): lamp002
I/flutter (15436): lamp003
I/flutter (15436): lamp001
I/flutter (15436): 001
I/flutter (15436): 002
I/flutter (15436): no
I/flutter (15436): 001
正如您所看到的,所有lap ID都是先打印的,因此它忽略了对用户ID的检查并添加到列表中
换句话说,当项目add处于if状态时,它不添加任何内容,而如果我将其放在firebaseRef2之外,它将添加所有灯列表使用wait告诉Flatter等待:
await _firebaseRef2.once().then((DataSnapshot snapshot) async
我已经尝试过将id添加到列表中,但是我使用了return ListView.builder,我认为在添加列表之前它已经被传递了