为什么未调用此Firebase Listener?

时间:2018-09-23 18:10:36

标签: android web-services firebase firebase-realtime-database flutter

资深程序员,我正在用Firebase和Flutter开发一个新应用,当我从实时数据库中检索如下数据时,我遇到了一个问题:

example

我的主要问题是根本没有调用这部分代码:.listen((Event event) {//...})

这是我用来检索数据的代码的一部分:

static Future<StreamSubscription<Event>> getTodoStream(String todoKey,
      void onData(Todo todo)) async {
    String accountKey = await Preferences.getAccountKey();

    StreamSubscription<Event> subscription = FirebaseDatabase.instance
        .reference()
        .child("")
        .child(account)
        .child("")
        .child(Key)
        .onValue
        .listen((Event event) {
      var todo = new Todo.fromJson(event.snapshot.key, event.snapshot.value);
      onData(todo);
    });
}

我遵循了本教程:

https://www.youtube.com/watch?v=Bper2K92bd8&feature=youtu.be

这是我用作示例的代码:

https://gist.github.com/branflake2267/ea80ce71179c41fdd8bbdb796ca889f4

但是,正如我所说,监听根本没有被触发。你们当中有人知道为什么它不起作用吗?感谢您的建议。

2 个答案:

答案 0 :(得分:1)

如果您的代码中确实包含这些空白字符串(child("")),我认为它不会起作用!

首先尝试指定一个已知的常量路径,例如:

FirebaseDatabase.instance.reference()
  .child("/appointment-764c0/Akashdeep")
  .onValue.listen((Event event) {

在Akashdeep中进行更改...

也许您可以将代码更改为类似...

  .child("/$accountKey/$otherParam")

答案 1 :(得分:0)

主要问题是数据库的配置,因为未将其设置为读/写。