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 类型的相等性。
类
扩展类型
- 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
。
扩展
- BoolToJSBoolean 在 bool 上
- bool 到 JSBoolean 的转换。
- ByteBufferToJSArrayBuffer 在 ByteBuffer 上
- ByteBuffer 到 JSArrayBuffer 的转换。
- ByteDataToJSDataView 在 ByteData 上
- ByteData 到 JSDataView 的转换。
- DoubleToJSNumber 在 double 上
- 从 double 到 JSNumber 的转换。
- ExternalDartReferenceToObject 在 ExternalDartReference 上
- 从 ExternalDartReference 到 Object 的转换。
- Float32ListToJSFloat32Array 在 Float32List 上
- 从 Float32List 到 JSFloat32Array 的转换。
- Float64ListToJSFloat64Array 在 Float64List 上
- 从 Float64List 到 JSFloat64Array 的转换。
- FunctionToJSExportedDartFunction 在 Function 上
- 从 Function 到 JSExportedDartFunction 的转换。
-
FutureOfJSAnyToJSPromise 在 Future<
T> - 从 Future 到 JSPromise 的转换,其中 Future 返回一个值。
-
FutureOfVoidToJSPromise 在 Future<
void> - 从 Future 到 JSPromise 的转换,其中 Future 不返回值。
- Int16ListToJSInt16Array 在 Int16List 上
- 从 Int16List 到 JSInt16Array 的转换。
- Int32ListToJSInt32Array 在 Int32List 上
- 从 Int32List 到 JSInt32Array 的转换。
- Int8ListToJSInt8Array 在 Int8List 上
- 从 Int8List 到 JSInt8Array 的转换。
- JSAnyOperatorExtension 在 JSAny?
- 通用 JavaScript 操作符。
- JSAnyUtilityExtension 在 JSAny?
- 适用于任何 JavaScript 值的通用实用函数。
- JSArrayBufferToByteBuffer 在 JSArrayBuffer 上
- 从 JSArrayBuffer 到 ByteBuffer 的转换。
-
JSArrayToList 在 JSArray<
T> - 从 JSArray 到 List 的转换。
- JSBooleanToBool 在 JSBoolean
- 从 JSBoolean 到 bool 的转换。
- JSBoxedDartObjectToObject 在 JSBoxedDartObject
- 从 JSBoxedDartObject 转换为 Object。
- JSDataViewToByteData 在 JSDataView
- 从 JSDataView 转换为 ByteData。
- JSExportedDartFunctionToFunction 在 JSExportedDartFunction
- 从 JSExportedDartFunction 转换为 Function。
- JSFloat32ArrayToFloat32List 在 JSFloat32Array
- 从 JSFloat32Array 转换为 Float32List。
- JSFloat64ArrayToFloat64List 在 JSFloat64Array
- 从 JSFloat64Array 转换为 Float64List。
- JSFunctionUtilExtension 在 JSFunction
- 针对 JSFunction 的实用扩展。
- JSInt16ArrayToInt16List 在 JSInt16Array
- 从 JSInt16Array 转换为 Int16List。
- JSInt32ArrayToInt32List 在 JSInt32Array
- 从 JSInt32Array 转换为 Int32List。
- JSInt8ArrayToInt8List 在 JSInt8Array
- 从 JSInt8Array 转换为 Int8List。
- JSNumberToNumber 在 JSNumber
- 从 JSNumber 转换为 double 或 int。
-
JSPromiseToFuture 在 JSPromise<
T> - 从 JSPromise 转换为 Future。
- JSStringToString 在 JSString
- 从 JSString 转换为 String。
- JSUint16ArrayToInt16List 在 JSUint16Array
- 从 JSUint16Array 转换为 Uint16List。
- JSUint32ArrayToUint32List 在 JSUint32Array
- 从 JSUint32Array 转换为 Uint32List。
- JSUint8ArrayToUint8List 在 JSUint8Array
- 从 JSUint8Array 转换为 Uint8List。
- JSUint8ClampedArrayToUint8ClampedList 在 JSUint8ClampedArray
- 从 JSUint8ClampedArray 转换为 Uint8ClampedList。
-
ListToJSArray 在 List<
T> - 从 List 转换为 JSArray。
- NullableObjectUtilExtension 在 Object 上?
Object?
的通用工具函数。- NullableUndefineableJSAnyExtension 在 JSAny 上?
- 辅助方法,用于判断一个值是否为 JavaScript 的
undefined
或null
。 - NumToJSExtension 在 num
- 从 num 到 JSNumber 的转换。
- ObjectToExternalDartReference 在 Object
- 从 Object 到 ExternalDartReference 的转换。
- ObjectToJSBoxedDartObject 在 Object
- 从 Object 到 JSBoxedDartObject 的转换。
- StringToJSString 在 String
- 从 String 到 JSString 的转换。
- Uint16ListToJSInt16Array 在 Uint16List
- 从 Uint16List 到 JSUint16Array 的转换。
- Uint32ListToJSUint32Array 在 Uint32List
- 从 Uint32List 到 JSUint32Array 的转换。
- Uint8ClampedListToJSUint8ClampedArray 在 Uint8ClampedList
- 从 Uint8ClampedList 到 JSUint8ClampedArray 的转换。
- Uint8ListToJSUint8Array 在 Uint8List
- 从 Uint8List 到 JSUint8Array 的转换。
常量
- 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以
null
或undefined
值拒绝时抛出的异常。