我想通过名称si字符串格式访问属性。
如果我有这样的课程:
class PrefsState {
String a;
PrefsState({
this.a,
})
我怎么能这样做:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test[key]);
当然不行。 Dart有办法做到这一点吗?
不幸的是,你不能在颤动中使用反射/镜子。你可以做的,这是乏味的,是使用地图。
class PrefsState {
String a;
const PrefsState({ this.a, });
dynamic getProp(String key) => <String, dynamic>{
'a' : a,
}[key];
}
在构造函数中构建映射可能更好,但如果你想要const构造函数,那么你将不得不满足于此。除非你有百万个参数,否则可能不会产生太大影响。然后你就像这样使用它:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test.getProp(key));
我不认为这样做的方法不那么繁琐,但是会被证明是错误的:-)
你可以用镜子来做,但是镜子在dart2js或者颤动中不起作用。您可以使用代码构建器来实现此目的,但真正的问题是您需要什么?