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

问题描述 投票:2回答:2

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

如果我有这样的课程:

class PrefsState {
  String a;

  PrefsState({
    this.a,

  })

我怎么能这样做:

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

print(test[key]);

当然不行。 Dart有办法做到这一点吗?

dart flutter
2个回答
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));

我不认为这样做的方法不那么繁琐,但是会被证明是错误的:-)


0
投票

你可以用镜子来做,但是镜子在dart2js或者颤动中不起作用。您可以使用代码构建器来实现此目的,但真正的问题是您需要什么?

© www.soinside.com 2019 - 2024. All rights reserved.