js_bindings 0.0.6 icon indicating copy to clipboard operation
js_bindings: ^0.0.6 copied to clipboard

Platformweb

Complete JS bindings interop with autocomplete and documentation.

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.

Usage #

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.

Promise and Future #

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 #

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.

Variadic args #

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.

Todo: #

For a better JS interop #

If you wish for a better JS interop in Dart, please, thumbs up the following issues:

Better JS interop in general

Donation #

What about a coffee?

Donate

13
likes
120
pub points
69%
popularity

Publisher

unverified uploader

Complete JS bindings interop with autocomplete and documentation.

Repository (GitHub)

Documentation

API reference

License

Icon for licenses.Apache-2.0 (LICENSE)

Dependencies

js, meta

More

Packages that depend on js_bindings