如何在字符串中通过此名称获取属性?

Dar*_*eff 7 dart flutter

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

如果我有这样的课程:

class PrefsState {
  String a;

  PrefsState({
    this.a,

  })
Run Code Online (Sandbox Code Playgroud)

我怎么能做这样的事情:

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

print(test[key]);

Run Code Online (Sandbox Code Playgroud)

当然是不行的。在 Dart 中有一种方法可以做到这一点吗?

Cyc*_*nus 7

不幸的是,您不能在颤动中使用反射/镜子。您可以做的是使用地图,这是乏味的。

class PrefsState { 
   String a; 
   const PrefsState({ this.a, });
   dynamic getProp(String key) => <String, dynamic>{
    'a' : a,
    }[key];
}
Run Code Online (Sandbox Code Playgroud)

在构造函数中构建地图可能会更好,但是如果您想要 const 构造函数,那么您必须满足于此。除非你有一百万个参数,否则可能不会有太大的不同。然后你像这样使用它:

PrefsState test= PrefsState(a: "it is a test");
String key = "a"; 
print(test.getProp(key));
Run Code Online (Sandbox Code Playgroud)

我不认为有一种不那么麻烦的方法,但很想被证明是错误的:-)