Flutter 等待 Firestore 完成

use*_*643 1 dart firebase flutter google-cloud-firestore

我正在使用 flutter 和 firebase 来创建一个应用程序。下面的函数从我的 firebase 数据库中获取一些数据,但问题是获取数据所需的时间太长。如何确保应用程序先等待 Firebase 获取数据完成,然后再继续?

我想做一些类似于等待的事情,但我不知道我是否可以这样做:

await Firestore.instance...
Run Code Online (Sandbox Code Playgroud)

代码:

  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

            });
          }
    });
  }
Run Code Online (Sandbox Code Playgroud)

Mic*_*ndz 5

要使用await,您必须将函数设置为async:

Future<void> getData() async {
Run Code Online (Sandbox Code Playgroud)

那么是的,你可以做

var result = await Firestore.instance.collection...
Run Code Online (Sandbox Code Playgroud)

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