我一直在尝试使用Dart从字符串动态创建方法,但一直没有成功。例如字符串:“(String str)=> return str.length;”。这个想法是允许用户创建自己的函数来应用于给定的字符串。我唯一找到的是NoSuchMethod,但它似乎不适用于我的情况。我尝试在JavaScript中使用new Function,但当将函数传递给Dart并执行时,我会收到以下错误:Uncaught TypeError:J.$index$asx(...).call$0不是一个函数。
代码示例:
Dart:
最后调用方法动态创建函数:
代码示例:
Dart:
context["UpdateNames"] =
(JsObject pTag)
{
print(pTag["function"]("text"));
};
JS:
function execute ()
{
var func = {"function": new Function("str", "return str.length;")};
UpdateNames(func);
}
编辑:
解决方案:在 JavaScript 中创建如下对象:
this.fun = function (name)
{
var text = "var funs = " + document.getElementById("personalFun").value;
eval(text);
return funs(name);
};
然后在Dart中创建对象:
caller = new JsObject(context['Point'], []);
最后调用方法动态创建函数:
caller.callMethod('fun', [text]);