我想写一些调用JavaScript函数“jsOnKey”的Dart函数“oKey”(由于无法预测,也有成功或异常)。
接下来我希望JavaScript函数“onKey”将调用Dart函数“callbackFromJs”再次将控制权返回给Dart(成功或异常)。
你能帮我解决这个问题吗?请在每个边框上假设 SUCCESS 或 EXCEPTION - 我不能依赖第三方代码 - DART 2 JS 2 DART?
为了对这个一般性问题提供更多上下文,我放了示例代码。
import 'dart:html';
void onKey(Event event) {
// I want to call something in javascript
// function callbackFromDart () {
// /* something */;
// /* call callbackJs in Dart - return control to dart */
// }
}
void callbackFromJs() {
// It should be called from JavaScript
}
void main() {
InputElement nameElement = querySelector('input[name=name]');
nameElement..placeholder = 'Enter text'
..onKeyUp.listen(onKey);
InputElement descriptionElement = querySelector('input[name=description]');
descriptionElement..placeholder = 'Enter text'
..onKeyUp.listen(onKey);
}
答案 0 :(得分:2)
首先看一下Using JavaScript from Dart。
对于你的情况,你可以简单地传递回调来处理你所谓的 Js 2 Dart :
import 'dart:js' as js;
void onKey(Event event) {
onSuccess() {
// Dart callback called from Js
}
onError() {
// Dart callback called from Js
}
// assuming your js function takes 2 callbacks as parameters
try {
// in JS : function a() { throw "throw from js"; }
js.context.callMethod('myTopLevelFunction', [onSuccess, onError]);
}
catch (e) {
print('js error catch on Dart side : $e');
}
}
Dart异常可以在Js端捕获相同类型的代码。