Appearance
dart:js_interop
Interoperability, "interop" for short, with JavaScript and browser APIs.
JavaScript interop allows a Dart program to interact with a JavaScript runtime. This can, for example, be to access JavaScript declarations and interact with JavaScript values, or to adapt Dart values so that they can be passed to and used by JavaScript code.
This JavaScript interop library works by introducing an abstraction over JavaScript values, a Dart type hierarchy ("JS types") which mirrors known JavaScript types, and a framework for introducing new Dart types that bind Dart type declarations to JavaScript values and external member declarations to JavaScript APIs.
This abstraction allows the same interop API to be used both when the Dart code is compiled to JavaScript and when compiled to Wasm.
See https://dart.dev/interop/js-interop for more details on usage, types, and previous JavaScript interop.
INFO
The types defined in this library only provide static guarantees. The runtime types differ based on the backend, so it is important to rely on static functionality like the conversion functions. Similarly, don't rely on is checks that involve JS types or JS-typed values. Furthermore, identical may also return different results for the same JS value depending on the compiler. Use == to check for equality of two JS-typed values instead, but do not check for equality between a Dart value and a JS-typed value.
Classes
| Class | Description |
|---|---|
| JS | An annotation on a JavaScript interop declaration. |
| JSExport | Annotation to allow Dart classes to be wrapped with a JS object using dart:js_interop's createJSInteropWrapper. |
Exceptions
| Exception | Description |
|---|---|
| NullRejectionException | Exception for when a JSPromise that is converted via JSPromiseToFuture.toDart is rejected with a null or undefined value. |
Extensions
Extension Types
| Extension Type | Description |
|---|---|
| ExternalDartReference<T extends Object?> | An opaque reference to a Dart object that can be passed to JavaScript. |
| JSAny | A non-nullish JavaScript value. |
| JSArray<T extends JSAny?> | A JavaScript Array. |
| JSArrayBuffer | A JavaScript ArrayBuffer. |
| JSBigInt | A JavaScript BigInt. |
| JSBoolean | A JavaScript boolean. |
| JSBoxedDartObject | A Dart object that is wrapped with a JavaScript object so that it can be passed to JavaScript safely. |
| JSDataView | A JavaScript DataView. |
| JSExportedDartFunction | A JavaScript callable function created from a Dart function. |
| JSFloat32Array | A JavaScript Float32Array. |
| JSFloat64Array | A JavaScript Float64Array. |
| JSFunction | A JavaScript Function value. |
| JSInt16Array | A JavaScript Int16Array. |
| JSInt32Array | A JavaScript Int32Array. |
| JSInt8Array | A JavaScript Int8Array. |
| JSNumber | A JavaScript number. |
| JSObject | A JavaScript Object. |
| JSPromise<T extends JSAny?> | A JavaScript Promise or a promise-like object. |
| JSString | A JavaScript string. |
| JSSymbol | A JavaScript Symbol. |
| JSTypedArray | Abstract supertype of all JavaScript typed arrays. |
| JSUint16Array | A JavaScript Uint16Array. |
| JSUint32Array | A JavaScript Uint32Array. |
| JSUint8Array | A JavaScript Uint8Array. |
| JSUint8ClampedArray | A JavaScript Uint8ClampedArray. |
Functions
| Function | Description |
|---|---|
| createJSInteropWrapper<T extends Object> | Given a instance of a Dart class that contains an <code>@JSExport</code> annotation, creates a JavaScript object that wraps the given Dart object. |
| importModule | Dynamically imports a JavaScript module with the given moduleName using the JavaScript import() syntax. |
Properties
| Property | Description |
|---|---|
| globalContext | The global scope that is used to find user-declared interop members. |
Constants
| Constant | Description |
|---|---|
| anonymous | An annotation that indicates a JS annotated class is structural and does not have a known JavaScript prototype. |
| staticInterop | staticInterop enables the JS annotated class to be treated as a "static" interop class. |
Typedefs
| Typedef | Description |
|---|---|
| JSVoid | JS type equivalent for undefined for interop member return types. |