我做了我认为是正确的更改,但是,现在我得到一个错误,说我不能在这里使用forEach,因为它可能返回null。我不能通过使用'!'来强制它,因为然后我得到另一个错误,说不能,因为方法'forEach'没有为类型'Object'定义。
void loadStudentList(){
// function that loads all students from firebase database and display them in list view
FirebaseDatabase.instance.ref("students").once()
.then((databaseEvent) {
print("Successfully loaded the data");
print(databaseEvent);
print("Key:");
print(databaseEvent.snapshot.key);
print("value:");
print(databaseEvent.snapshot.value);
print("Iterating the value map");
var studentTmpList = [];
databaseEvent.snapshot.value!.forEach((k, v) {
print(k);
print(v);
studentTmpList.add(v);
});
print("Final student list");
print(studentTmpList);
studentList = studentTmpList;
setState(() {
});
}).catchError((error) {
print("Failed to load the data");
print(error);
});
}
1条答案
按热度按时间bis0qfac1#
你所命名的datasnapshot实际上是一个databaseEvent,为了清楚起见,应该这样命名。事件有一个快照,快照有一个键和一个值。所以,要获得键,你应该能够使用
datasnapshot.snapshot.key
。同样,值将是datasnapshot.snapshot.value
。您真的应该阅读此文档... https://firebase.flutter.dev/docs/database/usage/
更新:
根据下面的注解,在您修订的代码更改中
到