我想通过名称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));

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

08-07 21:59