我想通过名称si字符串格式访问属性。
如果我有这样的课程:
class PrefsState {
String a;
PrefsState({
this.a,
})
我该怎么做:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test[key]);
当然不起作用。 Dart有办法做到这一点吗?
答案 0 :(得分:0)
您可以使用镜像来实现,但是镜像在dart2js或flutter中不起作用。您可以使用代码构建器来解决这个问题,但真正的问题是您对此有什么需求?
答案 1 :(得分:0)
不幸的是,您不能在颤动中使用反射/镜。 您可以做的是乏味的,就是使用地图。
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));
我认为这样做没有那么麻烦,但是很想证明自己是错的:-)