Breed
Breed

Reputation: 13

Unable to display data fetched from firebase realtime into flutter getX

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

Answers (1)

Rahul Kushwaha
Rahul Kushwaha

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

Related Questions