I am making a Flutter application that communicates with the ESP8266 through Firebase. So I am trying to get the variables of different sensors from Firebase into my Dart file.
But it keeps giving this error:
The getter ‘value’ isn’t defined for the type ‘DatabaseEvent’. Try
importing the library that defines ‘value’, correcting the name to the
name of an existing getter, or defining a getter or field named
‘value’.
Here is the relevant code:
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(() {});
}
});
}
so how can I get these values or can someone explain the error to me?
2
Answers
I finally managed to solve it or wrap around it somehow. I trust Dhafin's answer should have worked, but it didn't, and I don't know why. So here is what I have done; now everything works normally.
The returned future value of the
once
method is aDatabaseEvent
, not aDataSnapshot
. So yoursnapshot
variable is actually aDatabaseEvent
. To get the snapshot of aDatabaseEvent
, call itssnapshot
getter.