如何在String中使用此名称获取属性?

时间:2019-03-31 21:29:31

标签: dart flutter

我想通过名称si字符串格式访问属性。

如果我有这样的课程:

class PrefsState {
  String a;

  PrefsState({
    this.a,

  })

我该怎么做:

PrefsState test= PrefsState(a: "it is a test");
String key = "a";

print(test[key]);

当然不起作用。 Dart有办法做到这一点吗?

2 个答案:

答案 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));

我认为这样做没有那么麻烦,但是很想证明自己是错的:-)