从Dart调用javascript

Bra*_*ath 11 javascript dart

我能够从dart发出警报消息,但无法弄清楚如何调用我在dart的另一个js文件中编写的函数.如果直截了当,这将是一个很好的卖点.我确实看到了这篇帖子,它让我开始了,但我觉得必须有办法,所以如果你想出来的话请分享爱.

这就是我所做的:

  1. 将其添加到yaml文件:

    依赖项:js:hosted:js

  2. 将import语句添加到dart文件的顶部:import'package:js/js.dart'as js;

  3. 添加此代码以显示警报消息

    js.scoped((){js.context.alert("跳跃为喜悦!");});

  4. 这是我认为应该工作的部分但不是:鉴于我有一个javascript函数doSomething(),我应该可以调用

    js.context.doSomething();

Ale*_*uin 13

首先将js包作为依赖项添加到pubspec.yaml:

dependencies:
  js: any
Run Code Online (Sandbox Code Playgroud)

然后你可以使用你自己的js函数myFunc():

import 'package:js/js.dart' as js;

main() {
  js.context.myFunc();
}
Run Code Online (Sandbox Code Playgroud)

js.context是javascript的别名window.

有关详细信息,请参阅使用Dart中的JavaScript:js库.

  • js.context 不再存在 (3认同)
  • 在导入时,我们应该指定上述代码的前缀:`import'package:js/js.dart'as js;` (2认同)
  • 由于将package:js与dart:js一起烘焙,因此删除了js.scoped。 (2认同)

mo *_*ean 9

也许我的回答对某些人来说是值得的,所以这就是我发布一个来自 Dart 的简单 JS 函数调用的原因。

  1. 添加js包依赖:
    dependencies:
      js: any
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建一个 JS 文件,比方说example.js
    function test() {
      return 12+20;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 用标签example.js在里面添加上面index.html的内容<script src="...">
  4. 将上面的函数从 JS 互操作到 Dart:
    @JS()
    library t;
    
    import 'package:js/js.dart';
    
    @JS()
    external int Test();
    
    class MyOwn {
      int get value => Test();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  5. 并且,在 AngularDart 的 TODOLIST 中——这是可用的默认组件——:
    @override
    Future<Null> ngOnInit() async => print(MyOwn().value);
    
    Run Code Online (Sandbox Code Playgroud)