【问题标题】:How to initialize a new variable in an existing model in Flutter如何在 Flutter 中初始化现有模型中的新变量
【发布时间】:2021-10-17 13:28:56
【问题描述】:

我正在调用一个 api,它返回一个 json 数据,我通过使用在线转换器将这些数据嵌入到模型中。下面是示例 json 数据和模型

JSON

{
    "message": "menues returned by Dish Type successfully",
    "data": [
        {
            "id": "10"
        }
    ]
}

型号

class DishMenuTypesIdData {
  String? id;
  DishMenuTypesIdData({
    this.id,
  });
  DishMenuTypesIdData.fromJson(Map<String, dynamic> json) {
    id = json["id"]?.toString();
  }
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = Map<String, dynamic>();
    data["id"] = id;
    return data;
  }
}
class DishMenuTypesId {
  String? message;
  List<DishMenuTypesIdData?>? data;
  DishMenuTypesId({
    this.message,
    this.data,
  });
  DishMenuTypesId.fromJson(Map<String, dynamic> json) {
    message = json["message"]?.toString();
  if (json["data"] != null) {
  final v = json["data"];
  final arr0 = <DishMenuTypesIdData>[];
  v.forEach((v) {
  arr0.add(DishMenuTypesIdData.fromJson(v));
  });
    this.data = arr0;
    }
  }
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = Map<String, dynamic>();
    data["message"] = message;
    if (this.data != null) {
      final v = this.data;
      final arr0 = [];
  v!.forEach((v) {
  arr0.add(v!.toJson());
  });
      data["data"] = arr0;
    }
    return data;
  }
}

现在我决定在现有模型中添加一个变量qty 并初始化qty,这将是

int qty;

在构造函数中它会是

this.qty = 1;

但是当我在 ui 中调用这个数量时,它会得到null。虽然我在构造函数中初始化这个数量等于1

型号后包含数量

class DishMenuTypesIdData {

  String? qty;
  String? id;

  DishMenuTypesIdData({
    this.qty = "1",
    this.id,
  });
  DishMenuTypesIdData.fromJson(Map<String, dynamic> json) {
    qty = json["qty"]?.toString();
    id = json["id"]?.toString();
  }
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = Map<String, dynamic>();
    data["qty"] = qty;
    data["id"] = id;
    return data;
  }
}

class DishMenuTypesId {

  String? message;
  List<DishMenuTypesIdData?>? data;

  DishMenuTypesId({
    this.message,
    this.data,
  });
  DishMenuTypesId.fromJson(Map<String, dynamic> json) {
    message = json["message"]?.toString();
  if (json["data"] != null) {
  final v = json["data"];
  final arr0 = <DishMenuTypesIdData>[];
  v.forEach((v) {
  arr0.add(DishMenuTypesIdData.fromJson(v));
  });
    this.data = arr0;
    }
  }
  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = Map<String, dynamic>();
    data["message"] = message;
    if (this.data != null) {
      final v = this.data;
      final arr0 = [];
  v!.forEach((v) {
  arr0.add(v!.toJson());
  });
      data["data"] = arr0;
    }
    return data;
  }
}

【问题讨论】:

  • 你能标记/包括你如何添加qty变量的部分吗?我在 code-sn-p 上找不到它。
  • @YeasinSheikh 我已经更新了代码,请检查一下。
  • 如果我没记错的话,JSON 方法丢失了qty,你能把fromJson 和toJson() 上的那些包括进来吗?并确保在传递 int 时更改 String? qty; 的类型。
  • @YeasinSheikh 添加了fromJson 和toJson
  • 您还会遇到错误吗?

标签: json flutter dart


【解决方案1】:

服务器在被调用时没有返回数量,因此数量将为空。

qty = json["qty"]?.toString();

如果要将其初始化为1,则需要将此行替换为:

qty = "1";

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2018-11-19
    • 2019-10-30
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多