dart:js_interop library
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.
Note
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, for example toJS
and not runtime mechanisms like type checks (is
) and casts (as
).
Similarly, identical
may return different results for the same JS value
depending on the compiler. Use ==
to check for equality of two JS types
instead.
Classes
Extension Types
- ExternalDartReference
- An opaque reference to a Dart object that can be passed to JavaScript.
- JSAny
- A non-nullish JavaScript value.
- JSArray
-
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
-
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
.
Extensions
- BoolToJSBoolean
- Conversions from bool to JSBoolean.
- ByteBufferToJSArrayBuffer
- Conversions from ByteBuffer to JSArrayBuffer.
- ByteDataToJSDataView
- Conversions from ByteData to JSDataView.
- DoubleToJSNumber
- Conversions from double to JSNumber.
- ExternalDartReferenceToObject
- Conversions from ExternalDartReference to Object.
- Float32ListToJSFloat32Array
- Conversions from Float32List to JSFloat32Array.
- Float64ListToJSFloat64Array
- Conversions from Float64List to JSFloat64Array.
- FunctionToJSExportedDartFunction
- Conversions from Function to JSExportedDartFunction.
- FutureOfJSAnyToJSPromise
- Conversions from Future to JSPromise where the Future returns a value.
- FutureOfVoidToJSPromise
- Conversions from Future to JSPromise where the Future does not return a value.
- Int16ListToJSInt16Array
- Conversions from Int16List to JSInt16Array.
- Int32ListToJSInt32Array
- Conversions from Int32List to JSInt32Array.
- Int8ListToJSInt8Array
- Conversions from Int8List to JSInt8Array.
- JSAnyOperatorExtension
- General-purpose JavaScript operators.
- JSAnyUtilityExtension
- Common utility functions that are useful for any JavaScript value.
- JSArrayBufferToByteBuffer
- Conversions from JSArrayBuffer to ByteBuffer.
- JSArrayToList
- Conversions from JSArray to List.
- JSBooleanToBool
- Conversions from JSBoolean to bool.
- JSBoxedDartObjectToObject
- Conversions from JSBoxedDartObject to Object.
- JSDataViewToByteData
- Conversions from JSDataView to ByteData.
- JSExportedDartFunctionToFunction
- Conversions from JSExportedDartFunction to Function.
- JSFloat32ArrayToFloat32List
- Conversions from JSFloat32Array to Float32List.
- JSFloat64ArrayToFloat64List
- Conversions from JSFloat64Array to Float64List.
- JSFunctionUtilExtension
- Utility extensions for JSFunction.
- JSInt16ArrayToInt16List
- Conversions from JSInt16Array to Int16List.
- JSInt32ArrayToInt32List
- Conversions from JSInt32Array to Int32List.
- JSInt8ArrayToInt8List
- Conversions from JSInt8Array to Int8List.
- JSNumberToNumber
- Conversions from JSNumber to double or int.
- JSPromiseToFuture
- Conversions from JSPromise to Future.
- JSStringToString
- Conversions from JSString to String.
- JSUint16ArrayToInt16List
- Conversions from JSUint16Array to Uint16List.
- JSUint32ArrayToUint32List
- Conversions from JSUint32Array to Uint32List.
- JSUint8ArrayToUint8List
- Conversions from JSUint8Array to Uint8List.
- JSUint8ClampedArrayToUint8ClampedList
- Conversions from JSUint8ClampedArray to Uint8ClampedList.
- ListToJSArray
- Conversions from List to JSArray.
- NullableObjectUtilExtension
-
Common utility functions for
Object?
s. - NullableUndefineableJSAnyExtension
-
Helper methods to determine if a value is JavaScript
undefined
ornull
. - NumToJSExtension
- Conversions from num to JSNumber.
- ObjectToExternalDartReference
- Conversions from Object to ExternalDartReference.
- ObjectToJSBoxedDartObject
- Conversions from Object to JSBoxedDartObject.
- StringToJSString
- Conversions from String to JSString.
- Uint16ListToJSInt16Array
- Conversions from Uint16List to JSUint16Array.
- Uint32ListToJSUint32Array
- Conversions from Uint32List to JSUint32Array.
- Uint8ClampedListToJSUint8ClampedArray
- Conversions from Uint8ClampedList to JSUint8ClampedArray.
- Uint8ListToJSUint8Array
- Conversions from Uint8List to JSUint8Array.
Constants
- anonymous → const _Anonymous
-
An annotation that indicates a
JS
annotated class is structural and does not have a known JavaScript prototype. - staticInterop → const _StaticInterop
-
staticInterop enables the
JS
annotated class to be treated as a "static" interop class.
Properties
- globalContext → JSObject
-
The global scope that is used to find user-declared interop members.
no setter
Functions
-
createJSInteropWrapper<
T extends Object> (T dartObject) → JSObject -
Given a instance of a Dart class that contains an
@JSExport
annotation, creates a JavaScript object that wraps the given Dart object. -
importModule(
String moduleName) → JSPromise< JSObject> -
Dynamically imports a JavaScript module with the given
moduleName
using the JavaScriptimport()
syntax.
Typedefs
- JSVoid = void
-
JS type equivalent for
undefined
for interop member return types.
Exceptions / Errors
- NullRejectionException
-
Exception for when the promise is rejected with a
null
orundefined
value.