21

我能够从 dart 发出警报消息,但不知道如何调用我在 dart 的另一个 js 文件中编写的函数。如果它是直截了当的,这将是一个很好的卖点。我确实看到了这篇文章,这让我开始了,但我觉得一定有办法,所以如果你想通了,请分享爱。

这是我所做的:

  1. 将此添加到 yaml 文件中:

    依赖项:js:托管:js

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

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

    js.scoped(() { js.context.alert("欢呼雀跃!"); });

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

    js.context.doSomething();

4

2 回答 2

17

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

dependencies:
  js: any

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

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

main() {
  js.context.myFunc();
}

js.context是 javascript 的别名window

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

于 2012-12-12T17:52:48.470 回答
10

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

  1. 添加js包依赖:
    dependencies:
      js: any
    
  2. 创建一个 JS 文件,假设example.js
    function test() {
      return 12+20;
    }
    
  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();
    }
    
  5. 而且,在 AngularDart 的 TODOLIST 中——这是可用的默认组件——:
    @override
    Future<Null> ngOnInit() async => print(MyOwn().value);
    
于 2019-05-20T20:35:24.953 回答