繁体   English   中英

Function 在 FLutter 中返回 null

[英]Function returning null in FLutter

我正在尝试实现下面的 function,但它给了我 null。

具体来说, Future credit()不会更新变量值。 数据库没有问题,因为如果我输入print(doc['value'])而不是value += doc['value'] ,我会得到预期的结果。 看来, getCredit()是返回 null 的那个。

Future credit() async {
    final FirebaseUser user = await FirebaseAuth.instance.currentUser();
    final String uid = user.uid;
    int value = 0;
    Firestore.instance
        .collection('entries')
        .where("uid", isEqualTo: uid)
        .where("type", isEqualTo: "+")
        .orderBy("time", descending: true)
        .snapshots()
        .listen((data) => data.documents.forEach((doc) => value += doc['value']));
    print(value); // doesnt update value
    return value;
  }

  int getCredit() {
    credit().then((value) {print(value);});
    credit().then((value) {return value;});  // return mot working
  }

谢谢!

尝试这个:

Future<int> getCredit() async {
  return await  credit();
}

解决它。 似乎是变量的 scope 有问题。

int cr = 0;
Future credit() async {
    final FirebaseUser user = await FirebaseAuth.instance.currentUser();
    final String uid = user.uid;
    Firestore.instance
        .collection('entries')
        .where("uid", isEqualTo: uid)
        .where("type", isEqualTo: "+")
        .orderBy("time", descending: true)
        .snapshots()
        .listen((data) => data.documents.forEach((doc) {cr = cr + doc['value'];}));

    print('$cr');
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM