【问题标题】:Flutter Firebase - Not able to fetch data from FirestoreFlutter Firebase - 无法从 Firestore 获取数据
【发布时间】:2022-09-23 07:33:03
【问题描述】:

我正在尝试从“savedGoal”集合中获取数据,但它以某种方式抛出错误(NoSuchMethodError)。但是,相同的代码脚本/语法对于同一个 firebase 项目的另一个集合来说绝对可以正常工作。请让我知道这里可能出了什么问题。这是我在 ininState() 中运行的脚本-

FirebaseFirestore.instance
        .collection(\"savedGoals\")
        .where(\'uid\', isEqualTo: FirebaseAuth.instance.currentUser.uid)
        .get()
        .then((value) {
      value.docs.forEach((result) async {
        if (result.data().isNotEmpty) {
          setState(() {
            goalAmount = result.data()[\'goalAmountFixed\'];
          });
        }

这是我在使用 \"savedGoal\" 集合时收到的错误截图 - enter image description here

这是firebase文档截图- enter image description here

  • 这个错误有一些可能性。请分享您的 firebase 屏幕截图以获取更多参考,因为您的“savedGoals”中可能没有数据。
  • 打印值并打印结果,看看你得到了什么输出?
  • 我已使用 Firebase 集合和文档详细信息更新了我的问题。
  • @AhmadRaza 打印值为空

标签: flutter firebase google-cloud-firestore


【解决方案1】:

检查main.dart 以确保您已正确初始化 Firebase。如果您尚未在项目中初始化 Firebase,请尝试通过在 main 中添加以下内容来初始化它:

main() async {
    await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
}

如果不是这种情况,那么您能否发送添加与此问题相关的日志。还要交叉检查代码的格式。使用 results.isNotEmpty() 而不是 results().data.is Not Empty()。

【讨论】:

  • 它已经初始化。正如我在问题中提到的,从 Firestore 访问详细信息对于其他集合来说效果很好。问题仅在于这个特定的集合“savedGoals”
【解决方案2】:

您不需要调用 .data() 来获取键的值。就像我在下面所做的那样,直接从 QuerySnapshot 获取密钥的值。

FirebaseFirestore.instance
    .collection("savedGoals")
    .where('uid', isEqualTo: FirebaseAuth.instance.currentUser!.uid)
    .get()
    .then((value) {
  for (var result in value.docs) {
    if (result.data().isNotEmpty) {
      setState(() {
        goalAmount = result['goalAmountFixed'];
      });
    }
  }
});

如果它帮助并解决了您的问题,或者如果您仍然遇到问题,请将此答案标记为正确,然后请评论此答案,我会提供帮助。

编辑:让我们知道您是否仍需要帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2022-06-24
    • 2018-12-20
    • 2019-10-29
    • 2021-12-22
    • 1970-01-01
    • 2018-11-06
    相关资源
    最近更新 更多