一种在 flutter 中将 String 读取为飞镖代码的方法?

A way to read a String as dart code inside flutter?

我想构建一个方法来动态保存特定对象的属性

给定属性名称和要保存的值,我调用“save()”函数来更新全局 targetObj

var targetObj = targetClass();

save(String attribute, String value){
  targetObj.attribute = value;

  print(targetObj.attribute);
}

但我收到以下错误:

Class 'targetClass' has no instance setter 'attribute='.
Receiver: Instance of 'targetClass'
Tried calling: attribute="Foo"

我唯一能想到的是“属性”由于是 String 类型而导致错误。

这让我想到是否有一种方法可以将字符串读取为代码,例如 php 的 eval。

Dart(因此 flutter)没有办法在运行时编译和执行代码(dart:mirrors 除外,后者已弃用)。您 可以 使用各种构建器机制构建从其他代码派生的附加代码,尽管实现(和使用!)可能相当复杂。

如@Randal 所述,您无法在运行时创建 class..method。不过,您可以尝试这样的操作。

某个class

class Foo {
  dynamic bar1;
  dynamic bar2;
  // ...
}

你的保存方式

save(Foo fooObject, String attribute, dynamic value) {
  if ("bar1" == attribute) fooObject.bar1 = value;
  else if ("bar2" == attribute) fooObject.bar2 == value;
  // ...
}