firebase - 如何在 Flutter 中从 Firebase 实时数据库返回一个 int
问题描述
int GetInitial(String roomID) {
final dbRef =
FirebaseDatabase.instance.reference().child(roomID).child("initial");
db.child(roomID).child('initial').once().then((DataSnapshot snapshot) {
print('Data : ${snapshot.value}');
return int.parse(snapshot.value);
});
return 0;
}
我试图在我的 Firebase 实时数据库 JSON 树中返回一个孩子的值,但它一直给我零。我无法使用 once() 直接访问该值,因为返回值是错误的。但是,我从将值打印到控制台得到的输出是正确的,但是它不返回 int.parse(snapshot.value)。
解决方案
once()
是异步的,该then()
方法将注册回调,以便在此未来完成时调用。因此,在您的代码中,将始终返回 0,因为它是在未来完成之前执行的。
要解决这个问题,您可以使用async/await
:
Future<int> GetInitial(String roomID) async {
final dbRef = FirebaseDatabase.instance.reference().child(roomID).child("initial");
final snapshot = await db.child(roomID).child('initial').once();
print('Data : ${snapshot.value}');
return int.parse(snapshot.value);
}
推荐阅读
- javascript - 使用 Vue 为电子邮件提交带有内联样式的 HTML
- python - 如何自定义 mask r-cnn 的 display_instances() 函数的输出
- javascript - 反应引导手风琴加减指标问题
- python - 如何在 django 中覆盖管理列名“is_staff”和“is_superuser”?
- docker - Kubernetes 无法运行本地构建的 docker 镜像
- python - 在 python 中订阅 Redis 通道的意外功能
- .net - API 应用单端口多应用 IIS
- python - 在 Pandas 数据框中具有依赖性的条件累积和
- react-native - React Native 无法访问 4G 中的沙箱,但可以在 Wifi 中工作
- spring-boot - 在 JPA 存储库(Spring Data Jpa)中执行自定义查询