飞镖码
import 'dart:html' as html;
import 'dart:js' as js;
import 'package:js/js.dart';
void main() {
var data = new AddLocationData(locationName: "Location1", locationPath: "ThisFolder");
var func = () => data;
html.window.console.log(func);
html.window.console.log(func());
}
@JS("")
@anonymous
class AddLocationData {
external String get locationName;
external String get locationPath;
external factory AddLocationData({String locationName, String locationPath});
}
你会认为func
将是一个js函数但不是。其类型/名称为main_closure
。见截图
所以前两行是从Dart代码打印的,然后我使用Chrome Inspect Element窗口并右键单击main_closure' and selected "Store as global variable" which then printed
temp1`然后我用它来显示有关生成代码的一些信息。
所以很明显Dart返回了一个对象而不是一个js函数,所以这就是提出这个问题的原因。
所以我希望temp1
成为一个函数而不是temp1.call$0
,这样我才能通过调用temp1()
而不是temp1.call$0()
来获取数据。
答案 0 :(得分:2)
请参阅js package doc:
将函数传递给JavaScript。
如果您要将Dart函数传递给JavaScript API,则必须使用
allowInterop
或allowInteropCaptureThis
将其包装。