14

我对飞镖有点陌生,并试图通过在其中编写一些库函数来弄湿我的脚。

虽然我从 dart 调用 javascript 函数没有问题,但我希望能够从 javascript 调用 dart 函数,但到目前为止,我不太喜欢。

例如,我希望能够从 dart 中公开一些基本功能,例如:

main() {
  String foo() {
    return "bar!";
  }

  js.scoped(() {
    js.context.foo = foo;
  });
}

然后能够从 javascript 调用它们,如下所示:

<script>
  window.onload = function() {
    alert("foo() = " + foo());
  }
</script>

这样的事情甚至可能吗?

4

3 回答 3

13

没问题 !请参阅从 JavaScript 调用 Dart

在你的情况下:

import 'dart:js' as js;
main() {
  String foo() {
    return "bar!";
  }

  js.context['foo'] = foo;
}
于 2013-03-27T21:06:35.490 回答
4

在 Dart 1.20 中,我必须添加allowInterop()

import 'dart:js' as js;
main() {
  String foo() {
    return "bar!";
  }

  js.context['foo'] = allowInterop(foo);
}
于 2016-09-09T11:11:13.303 回答
2

在 Dart 2.3.0 中,我不得不稍微调整一下解决方案allowInterop才能玩得更好。


    import 'dart:js' as js;
    main() {
      String foo() {
        return "bar!";
      }

      js.context['foo'] = js.allowInterop(foo);
    }

于 2019-05-22T20:24:51.327 回答