我以前有以下代码,它工作正常。(请注意,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);
}
}
这有点罗嗦,所以我想我会把它分成两部分。我首先有这个:
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
构造函数?