В настоящее время я пытаюсь сериализовать и десериализовать модель класса моего приложения, но я не могу найти хороший способ сделать это.
Проблема состоит в том, что некоторые компоненты имеют переменные-члены с абстрактным типом (* * * * * У модели root
есть абстрактный тип Super
). При десериализации этого я не могу знать, относится ли root
к типу ConcreteA
или ConcreteB
. Как мне решить эту проблему красиво?
class Model {
Super root;
Model({this.root});
}
abstract class Super {
int superProp;
Super({this.superProp});
}
class ConcreteA extends Super {
int aConcrete;
ConcreteA({this.aConcrete, int superProp}) : super(superProp: superProp);
}
class ConcreteB extends Super {
ConcreteB({int superProp}) : super(superProp: superProp);
}
void main() {
var modelA = Model(root: ConcreteA(aConcrete: 1, superProp: 2));
// somehow serialize and deserialize without code repetition in fromJSON
}