我正在做一个Flutter应用程序,通过Firebase与ESP8266进行通信。所以我试图从Firebase中获取不同传感器的变量到我的Dart文件中。
的数据
但它一直给出这个错误:
未为类型“DatabaseEvent”定义getter“value”。请尝试导入定义“value”的库,将名称更正为现有getter的名称,或者定义名为“value”的getter或字段。
下面是相关代码:
bool ledOn = false;
bool heaterOn = false;
double drunkAmount = 0.0;
String temperature = '';
final database = FirebaseDatabase.instance.ref();
_DashboardContentState() {
database.child('ESP').once().then((snapshot) {
temperature = snapshot.value['temperature'];
drunkAmount = snapshot.value['drunkAmount'];
heaterOn = snapshot.value[''] == 0;
ledOn = snapshot.value['LED'] == 0;
});
database.child('ESP').onChildChanged.listen((event) {
DataSnapshot snap = event.snapshot;
if (snap.key == 'drunkAmount') {
drunkAmount = snap.snapshot.value;
setState(() {});
}
});
}
字符串
那么我怎么才能得到这些值,或者有人能向我解释这个错误吗?
2条答案
按热度按时间jv2fixgn1#
once
方法返回的future值是DatabaseEvent
,而不是DataSnapshot
。因此,snapshot
变量实际上是DatabaseEvent
。要获取DatabaseEvent
的快照,请调用其snapshot
getter。字符串
xqk2d5yq2#
我终于设法解决了这个问题,或者以某种方式解决了它。我相信达芬的答案应该起作用,但它没有,我不知道为什么。所以这就是我所做的;现在一切正常。
字符串