首页 > 解决方案 > 从 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);

 }

标签: androidfirebasefluttergoogle-cloud-firestore

解决方案


如果需要在处理方法结束前设置placeand 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


推荐阅读