资深程序员,我正在用Firebase和Flutter开发一个新应用,当我从实时数据库中检索如下数据时,我遇到了一个问题:
我的主要问题是根本没有调用这部分代码:.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
但是,正如我所说,监听根本没有被触发。你们当中有人知道为什么它不起作用吗?感谢您的建议。
答案 0 :(得分:1)
如果您的代码中确实包含这些空白字符串(child("")
),我认为它不会起作用!
首先尝试指定一个已知的常量路径,例如:
FirebaseDatabase.instance.reference()
.child("/appointment-764c0/Akashdeep")
.onValue.listen((Event event) {
在Akashdeep中进行更改...
也许您可以将代码更改为类似...
.child("/$accountKey/$otherParam")
答案 1 :(得分:0)
主要问题是数据库的配置,因为未将其设置为读/写。