Reputation: 13
I don't know how to fetch and display data from firebase realtime into flutter getX. I have tried but instead it produces the number 0 and the data doesn't enter. This is code controller sensor
final sensorData = Sensor(
baterai: 0,
pakan: 0,
setAir: 0,
setJam: 0,
setMenit: 0,
suhu: 0.0,
ultrasonic: 0,
pH: 0.0,
).obs;
late DatabaseReference _databaseReference;
@override
void onInit() {
super.onInit();
_databaseReference = FirebaseDatabase.instance.ref('Sensor');
_databaseReference.onValue.listen((event) {
var snapshot = event.snapshot;
if (snapshot.value != null) {
var data = snapshot.value;
if (data != null && data is Map<String, dynamic>) {
var sensor = Sensor.fromJson(data);
sensorData.value = sensor;
} else {
sensorData.value = Sensor(
baterai: 0,
pakan: 0,
setAir: 0,
setJam: 0,
setMenit: 0,
suhu: 0.0,
ultrasonic: 0,
pH: 0.0,
);
}
}
});
}
}
and then, this is model sensor
int baterai;
int pakan;
int setAir;
int setJam;
int setMenit;
double suhu;
int ultrasonic;
double pH;
Sensor({
required this.baterai,
required this.pakan,
required this.setAir,
required this.setJam,
required this.setMenit,
required this.suhu,
required this.ultrasonic,
required this.pH,
});
factory Sensor.fromJson(Map<String, dynamic> json) => Sensor(
baterai: json["Baterai"],
pakan: json["Pakan"],
setAir: json["Set_Air"],
setJam: json["Set_Jam"],
setMenit: json["Set_Menit"],
suhu: json["Suhu"]?.toDouble(),
ultrasonic: json["Ultrasonic"],
pH: json["pH"]?.toDouble(),
);
Map<String, dynamic> toJson() => {
"Baterai": baterai,
"Pakan": pakan,
"Set_Air": setAir,
"Set_Jam": setJam,
"Set_Menit": setMenit,
"Suhu": suhu,
"Ultrasonic": ultrasonic,
"pH": pH,
};
}
this is code for page
Obx(() => Text('Pakan ${sensorController.sensorData.value.pakan}',
style: TextStyle(fontSize: 18.0),
),
can you help me? provide solutions to overcome the above problems enter image description here
this is result running after replace
Upvotes: 1
Views: 99
Reputation: 6742
You can do like this :-
Define your Controller :-
Rx<Sensor> sensorData = Sensor().obs;
late DatabaseReference _databaseReference;
@override
void onInit() {
super.onInit();
_databaseReference = FirebaseDatabase.instance.ref('Sensor');
_databaseReference.onValue.listen((event) {
var snapshot = event.snapshot;
if (snapshot.value != null) {
var data = snapshot.value;
if (data != null) {
var sensor = Sensor.fromJson(data);
sensorData.value = sensor;
} else {
sensorData.value = Sensor(
baterai: 0,
pakan: 0,
setAir: 0,
setJam: 0,
setMenit: 0,
suhu: 0.0,
ultrasonic: 0,
pH: 0.0,
);
}
}
});
}
}
Use the value of Sensor in Widget :-
Obx(() => Text(
'Pakan ${sensorController.sensorData.value.pakan}',
style: TextStyle(fontSize: 18.0),
),
Upvotes: 0