我在dart中有一个Identity类,看起来像这样(简化)
class Identity {
final String phoneNumber;
Identity({@required this.phoneNumber});
Identity.fromJson(Map<String, dynamic> json)
: phoneNumber = json['phoneNumber'];
}
我将使用此类将HTTP POST发送到我的身份服务;该服务将返回一个我想映射到ActiveIdentity的json,它看起来像这样(也简化了)。
class ActiveIdentity extends Identity {
final String id;
ActiveIdentity.fromJson(Map<String, dynamic> json)
: id = json['id'];
}
现在,有没有一种方法可以在Identity中扩展或调用fromJson,以便我可以“扩展”此方法?理想情况下,在ActiveIdentity中从fromJson调用时,我应该收到一个新的ActiveIdentity实例,该实例的所有属性均已初始化(phoneNumber和id),但是在ActiveIdentity上,我只想处理id。
我也尝试过用mixin来考虑这个问题,但不幸的是失败了……关于实现此目标的最佳方法的任何想法?
谢谢!
答案 0 :(得分:1)
我认为以下方法可以解决您的问题:
class Identity {
final String phoneNumber;
Identity({@required this.phoneNumber});
Identity.fromJson(Map<String, dynamic> json)
: phoneNumber = json['phoneNumber'];
}
class ActiveIdentity extends Identity {
final String id;
ActiveIdentity.fromJson(Map<String, dynamic> json)
: id = json['id'],
super.fromJson(json) {
print('$phoneNumber $id');
}
}
尝试查看Dart documentation of constructors,以澄清该主题。