android - 从 Firebase Firestore 中检索数据的最佳方式,然后添加到数组中,以便您以后使用这些信息
问题描述
我正在尝试设计一种方法,我可以在其中从 firebase 检索数据并将其归因于全局变量。但到目前为止,我还没有取得任何成功,因为 Firestore 是异步的,当我需要信息时,Firestore 已经没有它们了。有人可以建议我如何创建一种方法来将其存储在数组中的信息中或分配给全局变量?
class _VehicleDetailsState extends State<VehicleDetails> {
String speed, place;
void displayData() {
FirebaseFirestore.instance
.collection('Cars')
.where('id', isEqualTo: Routes.idCar)
.get()
.then((value) {
value.docs.forEach((result) {
place = result.data()['place'];
speed = result.data()['speed'];
});
});
}
print(place);
print(speed);
}
解决方案
如果需要在处理方法结束前设置place
and speed
,则需要等待Firestore获取文档。
另外,在您的示例中,您将print
语句放在方法之外,我不知道这是否是复制粘贴错误。
尝试更改您的方法:
void displayData() async {
await FirebaseFirestore.instance
.collection('Cars')
.where('id', isEqualTo: Routes.idCar)
.get()
.then((value) {
value.docs.forEach((result) {
place = result.data()['place'];
speed = result.data()['speed'];
});
});
print(place);
print(speed);
}
在方法中调用 displayData() 时,它将等待 Firestore 检索集合id = Routes.idCar
中的文档。Cars
推荐阅读
- r - 如何将字符串匹配到大字典并避免内存问题
- css - 在 React 中使用 styled-components 将图像组件作为属性处理
- ios - 为什么在Sign in with Apple中有“nonce”时会有“state”
- c++ - C++。我想将更改的特定字符行保存在字符串中
- python - 单熊猫系列中的交集
- c# - ItemSource 值可以评估以决定标签或单选按钮之间的样式
- python - 有没有办法在 python 的大数据框中更快地填充 NULL 值。因为fillna导致我出现内存错误
- java - 这个 MySql INSERT 语句有什么问题?
- youtube-api - 通过 YouTube 数据 API 为一组用户点赞的视频
- c# - ServiceController 异常(无法控制计算机“.”上的服务。)