Flutter等待Firestore完成

时间:2020-03-21 05:45:44

标签: firebase flutter dart google-cloud-firestore

我正在使用带有Firebase的flutter创建一个应用程序。下面的函数从我的Firebase数据库获取一些数据,但是问题是获取数据花费的时间太长。如何确保应用程序在等待Firebase获取数据之前先完成操作?

我想做一个等待的事情,但是我不知道是否可以做:

await Firestore.instance...

代码:

  void getData() {

    Firestore.instance
        .collection('collection')
        .document('document')
        .get()
        .then((DocumentSnapshot ds) {

          var count = ds.data.length;
          for(var i = 0; i < count; i ++){
            Firestore.instance
                .collection('collection')
                .document('document')
                .get()
                .then((DocumentSnapshot dss) {
                // do something

            });
          }
    });
  }

2 个答案:

答案 0 :(得分:4)

要使用await,必须使函数异步:

Future<void> getData() async {

那是的,你可以做

var result = await Firestore.instance.collection...

而不是在then()回调中处理Future结果。在解决Future之前,将不执行下一行。

答案 1 :(得分:0)

您将需要等待Firestore返回数据。 然后返回。

Future getData() async {
  DocumentSnapshot ds = await Firestore.instance
      .collection('collection')
      .document('document')
      .get();
  final data = ds.//do something with document snapshot

  return data;
}

希望这会有所帮助。