flutter - 如何在Dart中将变量名转换为字符串?

标签 flutter dart dart-mirrors

对Flutter和Dart来说很陌生,请原谅我这个措辞不佳的问题。

这是我的通用代码:

// Constructor class
class ctr {
  String i;
  ctr(String a){
    this.a = a; 
}

// New variables based on contsructor
var ctrA = ctr('a');
var ctrB = ctr('b');
var ctrC = ctr('c');

// Storing the variables based on constructor in an array
List ctrList = [ctrA, ctrB, ctrC]

void main() {
  String match = 'ctrB';
  for (var i = 0; i<ctrList.length; i++) {
    if(match == ctrList.toString() {
      print('The string of your match is ${ctrList[i].a}');
    } else {
      print('Error!);
    }
  }
}

当前输出是Error!
相反,我正在寻找的是a

如您所见,我正在尝试在存储基于上述构造函数的变量的数组上遍历变量match,如果匹配,请在与之匹配的构造函数中打印出值。 runtimeType只能给我获取原始类的名称(将为ctr)。

我试图通过使用toString()转换变量名,但这也不起作用。我需要的是一种将这些变量名转换为字符串并获得匹配项的方法,但是我不确定该怎么做。

先谢谢您的帮助!

最佳答案

Dart中无法获取对象名称。例如,C#具有nameof()函数,但Dart却没有。

话虽这么说,不管您出于何种原因需要这样做,可能都有一种更简便的方法。因此,随时要求替代方法。

如果您只想使用变量名作为各种标识符,则可以考虑使用Maps。

Map<String,String> x = {"ctrB" : "b"};

它们使您可以定义任意类型的键和值。

编辑:顺便说一句,此声明
class ctr {
  String i;
  ctr(String a){
    this.a = a; 
}

可以简化为:
class ctr {
  String i;
  ctr(this.i);

}

关于flutter - 如何在Dart中将变量名转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62075043/

相关文章:

java - gradle 4.2.2 和 sdk 版本 31 的 flutter gradle 构建失败

flutter - Flutter-火焰与国际化?

sql - flutter -sqflite : How to change the order (index) of the persisted data?

dart - 调用方法(如果存在)

Flutter:在使用 Provider 构建期间调用 setState() 或 markNeedsBuild()

dart - 如何使用 Rikulo 流从客户端向服务器发送数据

unit-testing - drone.io headless Dart 测试

flutter - 将图像 FlutterWebImagePicker 输出转换为文件

reflection - 如何使用私有(private)构造函数反射(reflect)导入包中的类?

json - 从 Dart 中没有类的字符串/符号创建对象的实例?