我想写一些Dart函数"oKey",它调用JavaScript函数"jsOnKey"(成功或异常,因为无法预测)。
接下来,我希望 JavaScript 函数 "onKey" 调用 Dart 函数 "callbackFromJs" 以再次将控制权返回给 Dart(成功或异常)。
你能帮我完成这个完整的流程吗 - 请假设每个边框上的成功或异常 - 我不能依赖第三方代码 - 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);
}
首先看看 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 端使用相同类型的代码捕获。