以前は次のコードがありましたが、正常に動作します。(Card、SearchResults、Quiz はすべて Persistable を拡張し、Persistable にはコンストラクターが含まれていることに注意してください.fromMap
。
Persistable fromString(String value){
Map<String, dynamic> m = parse(value);
switch(m['type']){
case 'card':
return new Card.fromMap(m);
case 'searchresults':
return new SearchResults.fromMap(m);
case 'quiz':
return new Quiz.fromMap(m);
}
}
少し長くなってしまったので、2回に分けて書きたいと思います。私は最初にこれを持っています:
static final Map<String, Persistable> lookup =
{'card': Card,
'searchresults': SearchResults,
'quiz': Quiz };
合理的に思えますが、メソッドを再定義しようとすると混乱します。
Persistable fromString(String value){
Map<String, dynamic> m = parse(value);
String type = m['type'];
Persistable p = lookup[type];
... Confused, this can't be right
... ultimately want to "return new p.fromMap(m)";
}
Persistable p
は実際には class のインスタンスを意味しますPersistable
。lookup
値が class になるようにマップを入力して、それらのコンストラクターPersistable
を呼び出すにはどうすればよいですか?.fromMap