这是一个(或者应该是)一个完整的JavaScript互操作包,使用了package:js绑定。
绑定是通过机器读取 WebIDL 文件中的类型和 MDN 网站上的文档来生成的。
看看 MediaStream 文件,看看它和优秀的MDN文档结合起来有多棒。
用法
import 'package:js_bindings/js_bindings.dart';
void main() {
var div = document.createElement('div')
..innerHTML = 'Hello world =]';
document.body!.appendChild(div);
}
Promise 和 Future
JS Promise 和 Dart Future 是不同的东西。
这个包提供了一种简单的方式来使用 promises
import 'package:js_bindings/js_bindings.dart';
Future<void> main() async {
await window.navigator.mediaDevices.getUserMedia().future;
// or
window.navigator.mediaDevices.getUserMedia().then((event) {});
}
需要导入什么
有一个名为 bindings 的文件夹,每个IDL规范都有一个dart文件。
例如 orientation_event
import 'package:js_bindings/bindings/orientation_event.dart';
Future<void> main() async {
final permission = await DeviceOrientationEvent.requestPermission().future;
print('Granted? ${permission == PermissionState.granted}');
}
为了更好的JS互操作
如果您希望Dart有更好的JS互操作,请点赞以下问题
总的来说,更好的JS互操作
让等待Promise像等待Future一样简单
能够使用重命名的实例成员