如何在稳定的 1.1.1 Dart 中绑定 JavaScript 回调和在 JavaScript 中绑定 Dart 回调



我想写一些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 端使用相同类型的代码捕获。

最新更新