异步等待扑火

时间:2019-10-19 07:23:07

标签: asynchronous flutter async-await google-cloud-firestore

我想问一下我的代码是怎么回事。

在这种情况下,假设“ Counter”(计数器)字段为179,如何在打印之前更新外部myData?

    class Test {
      Firestore _firestore = Firestore.instance;
      var myData;

      void getData() async {
        DocumentSnapshot snapshot =
            await _firestore.collection('Counter').document('Counter').get();
        myData = await snapshot.data['Counter'];
        print('inside $myData');
      }

      void checkMyData() {
        myData = 5;
        getData();
        print('outside $myData');
      } 
    }

控制台:

颤抖:5点以外

颤动:在179内

1 个答案:

答案 0 :(得分:0)

您必须像这样使getData()返回Future

Future getData() async {

因此您可以这样做:

getData().then((value) {
  print('value: $value');
}).catchError((error) {
  print('error: $error');
});

但是您可能想使用FutureBuilder在到达时显示信息,例如:

FutureBuilder(
  future: getData(),
  builder: (context, snapshot) {
    if (snapshot.hasData) {
      return Text('value: ${snapshot.data}');
    } else if (snapshot.hasError){
      return Text('error: ${snapshot.error}');
    }
    return Text('loading...');
  },
)
相关问题