一种在 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;
// ...
}
我想构建一个方法来动态保存特定对象的属性
给定属性名称和要保存的值,我调用“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;
// ...
}