【问题标题】:1 QuerySnapshot returning null in Flutter web app but gives result in the Android console1 QuerySnapshot 在 Flutter Web 应用程序中返回 null 但在 Android 控制台中给出结果
【发布时间】:2021-10-16 14:41:44
【问题描述】:

我遇到了一个问题,即来自 firestore 的 QuerySnashot 在 android 控制台中打印时提供正确的值,但在颤振 Web 应用程序上构建它时返回 null。有人可以帮助我做错什么吗? 这是给我正确打印的函数:

countpassengers() async {
    String collection = "users";
    QuerySnapshot _myDoc = await firebaseFiretore.collection(collection).get();
    List<DocumentSnapshot> _myDocCount = _myDoc.docs;
    print("Number of Users: :::::::::::::");
    print(_myDocCount.length);  // Count of Documen
    totalusers = _myDocCount.length.toString() ;//ts in Collection
    print (totalusers.toString());
    return totalusers ;
}

这就是我如何称呼它(返回 null)

InfoCard(
         title: "Number of Passengers",
         value: totalusers.toString(),//"3",
         onTap: () {},
         topColor: Colors.orange,
),

【问题讨论】:

    标签: flutter google-cloud-firestore flutter-web


    【解决方案1】:

    当您将函数的输出返回到 State 时,您需要通过调用 setState 函数来重建状态。

    通过调用 setState,整个 StatefulWidget 知道某些内容已更新,并使用新数据重建状态。因此,在类中调用 Firestore 函数后插入 setState。它可以在函数内部或onTap: (){} 内部。

    如果您在 onTap: (){} 中调用该函数,请不要忘记像这样添加异步:onTap: () async{}await 您的返回数据。

    【讨论】:

    • 非常感谢,这就像一个魅力。我添加了 SetState,它解决了我 2 周的难题。非常感谢
    • @RogerantTshibangu 欢迎您。请研究如何使用 setState 以及何时使用。每次有新的更新数据时调用 setState 不是一个好方法。如果你使用太多,它会减慢你的应用程序。如果您的应用程序复杂且庞大,您可以考虑使用 BLoC 或 Provider 等状态管理库。
    • 谢谢@ZahidTekbas。我去看看。
    猜你喜欢
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2011-09-02
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多