我试图将我的项目逐步转换为飞镖。我已经将一个独立的库转换为Dart,我在我的项目中使用Dart编译的javascript。感谢my other question提供的帮助。我能够调用Dart编译的javascript函数。现在我面临另一个难题。如果我的Dart函数需要回调,如何将Javascript函数传递给Dart生成的javascript函数?
我要做的是从Javascript注册一个Dart事件处理程序,例如:
在我的Dart中,我有事件总线,dart对象可以通过以下方式注册事件处理程序:
bus.on('eventName', callbackFunc);
和Dart对象通过以下方式触发事件:
bus.fire('eventName', data);
我通过以下方式将总线暴露给Javascript世界:
js.context['registerEvent'] = bus.on;
在Javascript中,我想打电话
registerEvent('someEvent', function() { console.log('JS callback' });
注册事件处理程序,当Dart对象触发事件时,将调用JS回调。
答案 0 :(得分:2)
您可以尝试将其作为参数传递给Dart,并使用param.apply([])
答案 1 :(得分:1)
来自您之前的问题,
js.context["sayGreeting"] = (message) {
print("greeting: $message");
};
// pass js function which is already defined above.
someJsObject.callMethod('someOriginalJsFunction', [js.context['sayGreeting']]);