将Dart函数公开给javascript

时间:2013-03-27 20:49:55

标签: dart dart-js-interop

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

虽然我从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>

这样的事情是否可能?

3 个答案:

答案 0 :(得分:9)

没问题!见Calling Dart from JavaScript

在你的情况下:

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

  js.context['foo'] = foo;
}

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

在Dart 2.3.0中,我不得不对解决方案进行一些调整,以使allowInterop发挥出色。


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

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