I would like to call a Dart function from Javascript.
I would like to compile a Dart script containing a Dart function using dart2js
(version 1.1.3) and then load the generated .js
file into a Javascript environment and call that function from Javascript.
Something along the lines of calling myHyperSuperMegaFunction
below from Javascript.
import 'dart:js' as js;
int myHyperSuperMegaFunction(int a, int b) {
return a + b;
}
main() {
js.context['myHyperSuperMegaFunction'] = new js.JsFunction.withThis(myHyperSuperMegaFunction);
}
I tried compiling the above with dart2js
and loading the generated .js
file into Chrome. Variable myHyperSuperMegaFunction
is registered and defined as
function () {
return _call(f, captureThis, this, Array.prototype.slice.apply(arguments));
}
However, when I call myHyperSuperMegaFunction(2,3)
from Chrome Javascript console I get the following error NoSuchMethodError : method not found: 'Symbol("call")' Receiver: Instance of '(){this.$initialize' Arguments: [Instance of 'Window', 2, 3]
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…