我想通过名称si字符串格式访问属性。
如果我有这样的类(class):
class PrefsState {
String a;
PrefsState({
this.a,
})
我该怎么做:
PrefsState test= PrefsState(a: "it is a test");
String key = "a";
print(test[key]);
当然不行。 Dart有办法做到吗?
最佳答案
不幸的是,您不能在 flutter 中使用反射/镜。
您可以做的是乏味的使用 map 。
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));
我认为这样做没有那么麻烦,但是很想证明自己是错误的:-)