FLUTTER 如何根据传递的字符串名称获取变量?

Mus*_*man 5 dart flutter

我已将变量及其代码名称存储在一个类中。

假设我想从那个班级获得 XVG,我想做

String getIconsURL(String symbol) {

  var list = new URLsList();

  //symbol = 'XVG'

  return list.(symbol);
}

class URLsList{

var XVG = 'some url';
var BTC = 'some url';

}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我实现这一目标或为我提供更好的解决方案吗?

rmt*_*zie 6

Dart 在 flutter使用时不支持反射

如果出于某种原因,您希望直接在代码中包含文本,我建议您使用文本替换(使用您最喜欢的工具或使用 intellij 的 find + replace with regex)将其更改为地图,即

final Map<String, String> whee = {
  'XVG': 'url 1',
  'BTC': 'url 2',
};
Run Code Online (Sandbox Code Playgroud)

另一种选择是将其保存为资产中JSON文件,然后在应用程序打开时加载并读取它,或者甚至在首次运行时/需要时从服务器下载它(以防 URL 需要比您计划的更新频率更高在更新应用程序时)。像这样对一堆数据进行硬编码并不总是一个好主意。

编辑:如何使用。

final Map<String, String> whee = .....

String getIconsURL(String symbol) {
  //symbol = 'XVG'

  return whee[symbol];
}
Run Code Online (Sandbox Code Playgroud)

如果您在类中定义它,请确保将其也设置为静态,这样每次实例化类时都不会创建另一个。

另外,如果你通过他们想要遍历你有使用的选项entrieskeys或者values-参见地图类文档