【问题标题】:Why am I getting the Stack Overflow error?为什么我会收到堆栈溢出错误?
【发布时间】:2019-01-09 05:35:03
【问题描述】:

我收到 Stack Overflow 错误,但我似乎不知道出了什么问题。这是 Database 类帮助我获取 FirebaseDatabase 信息。

 import 'package:firebase_database/firebase_database.dart';
    import 'User.dart';
    import 'dart:async';


    class FireDatabase{
      FireDatabase();

      DatabaseReference userRef = FirebaseDatabase.instance.reference().child("users");
      DatabaseReference transactionsRef = FirebaseDatabase.instance.reference().child("transactions");
      User user = new User();


     getDatabaseUser(String cUid){
        userRef.orderByChild(cUid).once().then((DataSnapshot data){
          if (data.value!=null) {
            return data.value;
          } else {
            print("prints - database.dart : data.value of user is empty/null");
            return null;
          }
        },onError: (e){
          print("prints - database.dart " + e.toString());
          return null;
        });
        return null;
      }

      getDatabaseTransactions(String cUid) {
        transactionsRef.orderByChild("transactions").once().then((DataSnapshot data){
          if(data.value!=null) {
            return data.value;
          } else {
            print("prints - database.dart : data.value of user is empty/null");
            return null;
          }
        },onError: (e){
          print("prints - database.dart " + e.toString());
          return null;
        });
        return null;
      }

      getDatabaseTransaction(String cUid) {
        transactionsRef.orderByChild(cUid).limitToFirst(1).once().then((DataSnapshot data){
          if(data.value!=null) {
            return data.value;
          } else {
            print("prints - database.dart : data.value of user is empty/null");
            return null;
          }
        },onError: (e){
          print("prints - database.dart " + e.toString());
          return null;
        });
        return null;
      }

    }

【问题讨论】:

  • 异常输出是否提供有关导致异常的任何信息?我没有发现任何可能导致代码中无限递归的东西。也许您的 User 类有一个返回自身而不是支持字段的 getter(缺少 _
  • 我对这种语法不太熟悉,但对我来说,FireDatabase(); 调用意味着调用这个类的构造函数或其他东西,作为这个类的第一件事? (没有作为答案发布,据我所知,在这种情况下这是正常的)
  • @Nanne 是的,这是一个构造函数。
  • @GünterZöchbauer - 在数据库类中导入用户类和在用户类中导入数据库类可能是个问题吗?
  • 这与进口无关。 Dart 可以很好地处理循环导入。它是关于代码执行的,代码在循环中永远执行自己,直到它用完堆栈

标签: firebase-realtime-database flutter


【解决方案1】:

在数据库类中实例化一个用户类

用户 user = new User();

似乎是问题所在,但幸运的是我并没有使用它,用户被存储在用户类中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 2021-08-24
    相关资源
    最近更新 更多