我想在in it状态下从cloud firestore存档一个数字..下面是我的代码如何尝试存档,但它不起作用..有人能告诉我怎么做吗..

int _prvScore ;

//  @protected
//  @mustCallSuper
//  void initState() {
//    _prvScore = 23.toInt();
//  }


  @override
  void initState() {
    var month = new DateTime.now().month;
    final DocumentReference documentReference =
    Firestore.instance.collection('quiz').document('$month')
        .collection('1')
        .document(username);
    subscription =
        documentReference.snapshots().listen((datasnapshot) {
          if (datasnapshot.data.containsKey("total score")) {
            _prvScore = datasnapshot.data['total score'].toInt();
          }

    });



  }

最佳答案

您需要调用setState(...)以进行重建。
如果您执行异步代码,那么当函数完成并且build()已经执行时,结果将不可用。
异步代码只能在稍后执行。
改变

 _prvScore = datasnapshot.data['total score'].toInt();


setState(() => _prvScore = datasnapshot.data['total score'].toInt());

应该修复它。
您需要确保build()_prvScore仍然null时不会导致错误,因为还没有从FireBase收到数据。

关于flutter - 无法从云存储中归档init状态的单个数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51280575/

10-10 17:55