我正在编写一个扑动应用程序,我需要序列化一个类json。类是:
@HiveType(typeId: 0)
@JsonSerializable()
class CartItem extends HiveObject {
@HiveField(1)
String item_id;
@HiveField(2)
String name;
@HiveField(3)
SelectionsList selections;
@HiveField(4)
String special_instructions;
@HiveField(5)
int quantity;
@HiveField(6)
double amount;
@HiveField(7)
@JsonKey(ignore: true)
MenuItem item;
CartItem(this.item_id, this.name, this.selections, this.quantity, this.special_instructions, this.amount, this.item);
}
然而,由于item
字段被忽略(有意的),当我尝试生成。Dart文件时,抛出此错误。Cannot populate the required constructor argument: item. It is assigned to an ignored field.
我仍然需要它是在构造函数虽然,所以有一个解决办法吗?
所以我设法让这个工作。我不确定这是不是正确的方法,但如果它能帮助你,那就太好了。
@HiveType(typeId: 0)
@JsonSerializable()
class CartItem extends HiveObject {
...
@HiveField(7)
@JsonKey(ignore: true)
MenuItem item;
CartItem(this.item_id,
this.name, this.selections, this.quantity, this.special_instructions, this.amount,
[this.item = MenuItem.empty()]);
}
必须为构造函数项设置一个可选的位置,并给它一个默认值。您也可以将其设置为空,并省略构造函数项的默认值。