dart:js_interop

与 JavaScript 和浏览器 API 的互操作性。

JavaScript 互操作性使 Dart 程序能够与 JavaScript 运行时交互。例如,可以用来访问 JavaScript 声明和与 JavaScript 值交互,或者适配 Dart 值,以便将它们传递给 JavaScript 代码并供其使用。

此 JavaScript 互操作性库通过在 JavaScript 值之上引入一个抽象(即 Dart 类型层次结构“JS 类型”),它反映了已知的 JavaScript 类型,以及一个框架来引入新的 Dart 类型,将 Dart 类型声明绑定到 JavaScript 值,并将外部成员声明绑定到 JavaScript API 来工作。

这种抽象允许在使用 Dart 代码编译为 JavaScript 和使用 Wasm 编译时都能使用相同的互操作性 API。

有关用法、类型和以前的 JavaScript 互操作性的更多信息,请参阅 https://dart.ac.cn/interop/js-interop

注意

该库中定义的类型仅提供静态保证。运行时类型取决于后端,因此关键在于依赖于静态功能,例如转换函数,例如 toJS,而不是运行时机制,如类型检查(is)和强制类型转换(as)。同样,identical 可能会根据编译器返回相同的 JS 值的不同结果。请使用 == 来检查两个 JS 类型的相等性。

JS
JavaScript 互操作声明上的注解。
JSExport
注解,允许 Dart 类使用 dart:js_interopcreateJSInteropWrapper 被包装到一个 JS 对象中。

扩展类型

ExternalDartReference
指向可以传递到 JavaScript 的 Dart 对象的不可见引用。
JSAny
非 null 的 JavaScript 值。
JSArray
JavaScript Array
JSArrayBuffer
JavaScript ArrayBuffer
JSBigInt
JavaScript BigInt
JSBoolean
JavaScript 布尔值。
JSBoxedDartObject
一个 Dart 对象,通过将其包裹在一个 JavaScript 对象中,可以安全地传递给 JavaScript。
JSDataView
JavaScript DataView
JSExportedDartFunction
从 Dart 函数创建的 JavaScript 可调用函数。
JSFloat32Array
JavaScript Float32Array
JSFloat64Array
JavaScript Float64Array
JSFunction
JavaScript Function 值。
JSInt16Array
JavaScript Int16Array
JSInt32Array
JavaScript Int32Array
JSInt8Array
JavaScript Int8Array
JSNumber
JavaScript 数字。
JSObject
JavaScript Object
JSPromise
JavaScript Promise 或类似 Promise 的对象。
JSString
JavaScript 字符串。
JSSymbol
JavaScript Symbol
JSTypedArray
所有 JavaScript 泛型数组的抽象超类型。
JSUint16Array
JavaScript Uint16Array
JSUint32Array
JavaScript Uint32Array
JSUint8Array
JavaScript Uint8Array
JSUint8ClampedArray
JavaScript Uint8ClampedArray

扩展

BoolToJSBooleanbool
boolJSBoolean 的转换。
ByteBufferToJSArrayBufferByteBuffer
ByteBufferJSArrayBuffer 的转换。
ByteDataToJSDataViewByteData
ByteDataJSDataView 的转换。
DoubleToJSNumberdouble
doubleJSNumber 的转换。
ExternalDartReferenceToObjectExternalDartReference
ExternalDartReferenceObject 的转换。
Float32ListToJSFloat32ArrayFloat32List
Float32ListJSFloat32Array 的转换。
Float64ListToJSFloat64ArrayFloat64List
Float64ListJSFloat64Array 的转换。
FunctionToJSExportedDartFunctionFunction
FunctionJSExportedDartFunction 的转换。
FutureOfJSAnyToJSPromiseFuture<T>
FutureJSPromise 的转换,其中 Future 返回一个值。
FutureOfVoidToJSPromiseFuture<void>
FutureJSPromise 的转换,其中 Future 不返回值。
Int16ListToJSInt16ArrayInt16List
Int16ListJSInt16Array 的转换。
Int32ListToJSInt32ArrayInt32List
Int32ListJSInt32Array 的转换。
Int8ListToJSInt8ArrayInt8List
Int8ListJSInt8Array 的转换。
JSAnyOperatorExtensionJSAny?
通用 JavaScript 操作符。
JSAnyUtilityExtensionJSAny?
适用于任何 JavaScript 值的通用实用函数。
JSArrayBufferToByteBufferJSArrayBuffer
JSArrayBufferByteBuffer 的转换。
JSArrayToListJSArray<T>
JSArrayList 的转换。
JSBooleanToBoolJSBoolean
JSBooleanbool 的转换。
JSBoxedDartObjectToObjectJSBoxedDartObject
JSBoxedDartObject 转换为 Object
JSDataViewToByteDataJSDataView
JSDataView 转换为 ByteData
JSExportedDartFunctionToFunctionJSExportedDartFunction
JSExportedDartFunction 转换为 Function
JSFloat32ArrayToFloat32ListJSFloat32Array
JSFloat32Array 转换为 Float32List
JSFloat64ArrayToFloat64ListJSFloat64Array
JSFloat64Array 转换为 Float64List
JSFunctionUtilExtensionJSFunction
针对 JSFunction 的实用扩展。
JSInt16ArrayToInt16ListJSInt16Array
JSInt16Array 转换为 Int16List
JSInt32ArrayToInt32ListJSInt32Array
JSInt32Array 转换为 Int32List
JSInt8ArrayToInt8ListJSInt8Array
JSInt8Array 转换为 Int8List
JSNumberToNumberJSNumber
JSNumber 转换为 doubleint
JSPromiseToFutureJSPromise<T>
JSPromise 转换为 Future
JSStringToStringJSString
JSString 转换为 String
JSUint16ArrayToInt16ListJSUint16Array
JSUint16Array 转换为 Uint16List
JSUint32ArrayToUint32ListJSUint32Array
JSUint32Array 转换为 Uint32List
JSUint8ArrayToUint8ListJSUint8Array
JSUint8Array 转换为 Uint8List
JSUint8ClampedArrayToUint8ClampedListJSUint8ClampedArray
JSUint8ClampedArray 转换为 Uint8ClampedList
ListToJSArrayList<T>
List 转换为 JSArray
NullableObjectUtilExtensionObject 上?
Object? 的通用工具函数。
NullableUndefineableJSAnyExtensionJSAny 上?
辅助方法,用于判断一个值是否为 JavaScript 的 undefinednull
NumToJSExtensionnum
numJSNumber 的转换。
ObjectToExternalDartReferenceObject
ObjectExternalDartReference 的转换。
ObjectToJSBoxedDartObjectObject
ObjectJSBoxedDartObject 的转换。
StringToJSStringString
StringJSString 的转换。
Uint16ListToJSInt16ArrayUint16List
Uint16ListJSUint16Array 的转换。
Uint32ListToJSUint32ArrayUint32List
Uint32ListJSUint32Array 的转换。
Uint8ClampedListToJSUint8ClampedArrayUint8ClampedList
Uint8ClampedListJSUint8ClampedArray 的转换。
Uint8ListToJSUint8ArrayUint8List
Uint8ListJSUint8Array 的转换。

常量

anonymous → const _Anonymous
用于指示带有 JS 注解的类为结构化且没有已知的 JavaScript 原型的一个注解。
staticInterop → const _StaticInterop
staticInterop 允许带有 JS 注解的类作为 "静态" 互操作类来处理。

属性

globalContext JSObject
用于查找用户声明的互操作成员的全局作用域。
无设置器

函数

createJSInteropWrapper<T extends Object>(T dartObject) JSObject
给定一个包含 @JSExport 注解的 Dart 类的实例,创建一个包装给定 Dart 对象的 JavaScript 对象。
importModule(String moduleName) JSPromise<JSObject>
使用JavaScript的import()语法动态导入具有给定moduleName的JavaScript模块。

类型定义

JSVoid = void
JS类型与undefined相同,用于互操作成员返回类型。

异常/错误

NullRejectionException
当Promise以nullundefined值拒绝时抛出的异常。