如何解決以下錯誤?
我創建了 Data 類來快速讀取 JSON 物件。資料類作業正常,但我得到了引數型別“區域?” 在顫振錯誤中無法將引數型別“區域”分配給...我該怎么辦?
我的代碼
class DatumDatum {
DatumDatum({
required this.vehicleCc,
required this.zone,
required this.value,
});
final String vehicleCc;
final Zone zone;
final double value;
factory DatumDatum.fromJson(Map<String, dynamic> json) => DatumDatum(
vehicleCc: json["vehicleCC"],
zone: zoneValues.map[json["zone"]], // tis line I got a error
value: json["value"].toDouble(),
);
Map<String, dynamic> toJson() => {
"vehicleCC": vehicleCc,
"zone": zoneValues.reverse[zone],
"value": value,
};
}
enum Zone { ZONE_A, ZONE_B }
final zoneValues = EnumValues({
"Zone A": Zone.ZONE_A,
"Zone B": Zone.ZONE_B
});
class EnumValues<T> {
late Map<String, T> map;
late Map<T, String> reverseMap;
EnumValues(this.map);
Map<T, String> get reverse {
if (reverseMap == null) {
reverseMap = map.map((k, v) => new MapEntry(v, k));
}
return reverseMap;
}
}
uj5u.com熱心網友回復:
這里的問題是您使用的是 null 安全版本的顫振,因為我們需要處理 null 值。
這是解決方案:
當您從 API 服務接收到資料時,接收到的值可能為 null,這意味著該欄位的映射也將回傳 null,并且在您的模型欄位中您已宣告變數,因為它不能為 null,因此如果您知道,解決方案將是API 值始終包含比 json 中的欄位,您可以添加空檢查運算子,例如
factory DatumDatum.fromJson(Map<String, dynamic> json) => DatumDatum(
vehicleCc: json["vehicleCC"],
zone: zoneValues.map[json["zone"]]!, // ! this is null check operator
value: json["value"].toDouble(),
);
或者如果 API 可能包含 json["zone"] 引數的 NULL 值,您可以將變數宣告為final Zone? zone;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/446389.html
上一篇:如何正確執行POST請求?
