簡體   English   中英

未處理的異常:將 object 轉換為可編碼的 object 失敗:“測量”實例

[英]Unhandled Exception: Converting object to an encodable object failed: Instance of 'Mesure'

你好,我有 class 測量,當我讀取數據時,我使用它作為 model 然后我將它保存在我的數據庫getstorage getX中。 它工作得很好,但是當我添加這個測試 if mode = display 我將在我的 model 上添加更多數據並進行映射。 我收到這個錯誤。 如果它不可用,是否可以跳過“debut”和“fin”?

未處理的異常:將 object 轉換為可編碼的 object 失敗:“Mesure”實例如何修復它

class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant = "";
  late String debut;
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'],
        fin = json['fin'];

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

有兩件事:

  1. 您必須初始化debut以使其寫入 JSON ( get_storage );
  2. 並且,從 JSON (get_storage) 讀取時,您必須將debutfin的值默認為某個值;

所以,整個 class Mesure看起來像這樣:


class Mesure {
  late int id;
  String status;
  late String mode;
  late String equipementNumero;
  late String temperature;
  late String courant;
  late String debut = "";
  late String fin = "";

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode == "display") {
      debut = values[4];
      fin = values[5];
    }
  }

  Mesure.fromJson(Map<String, dynamic> json)
      : id = json['id'],
        status = json['status'],
        mode = json['mode'],
        temperature = json['temperature'],
        equipementNumero = json['equipementNumero'],
        courant = json['courant'],
        debut = json['debut'] ?? '',
        fin = json['fin'] ?? '';

  Map<String, dynamic> toJson() {
    if (mode == "display") {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
      };
    } else {
      return {
        'id': id,
        'status': status,
        'mode': mode,
        'temperature': temperature,
        'equipementNumero': equipementNumero,
        'courant': courant,
        'debut': debut,
        'fin': fin,
      };
    }
  }
}

此外,構造函數中的代碼在toJson中看起來是倒置的。 在構造函數中不應該像這樣mode = "display"而不是mode == "display"

  Mesure.init(List<String> values, this.id, this.status) {
    mode = values[0];
    equipementNumero = values[1];
    temperature = values[2];
    courant = values[3];

    if (mode != "display") {
      debut = values[4];
      fin = values[5];
    }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM