Discontinued! Please, use Typings instead.
This is (or should be) a full JavaScript interop package using package:js bindings.
The bindings are generated by machine-reading WebIDL files for types and MDN website for documentation.
Take a look at MediaStream file and check out how nice it got with the awesome MDN documentation.
This package is officially sponsored by Invertase.io
import 'package:js_bindings/js_bindings.dart';
void main() {
var div = document.createElement('div')
..innerHTML = 'Hello world =]';
document.body!.appendChild(div);
}
Check the example tab for a more complete example.
JS Promises and Dart Futures are different things.
But this package make them the same! :D
import 'package:js_bindings/js_bindings.dart';
Future<void> main() async {
// you can await like regular future
await window.navigator.mediaDevices.getUserMedia();
// or
window.navigator.mediaDevices.getUserMedia().then((event) {});
}
Enums like document.visibilityState
are Strings
in JS world,
but here we work with enums instead.
For example document.visibilityState
is of type VisibilityState
, which is a Enum
.
So all of what is specificied in the W3C IDL files as enums are in fact enums in this package.
Dart doesn't have the concept of variadic args as JS, so
we can't make a one to one there. However, we made it that
variadic arguments are multiplied to 3 optional args of same type.
Example: window.console.log(1, 2, 3)
- In this case all arguments are dynamic.
If you wish for a better JS interop in Dart, please, thumbs up the following issues:
What about a coffee?