dart:js_interop 库
JavaScript 和浏览器 API 的互操作性,简称“interop”。
JavaScript 互操作性允许 Dart 程序与 JavaScript 运行时进行交互。这可以用于访问 JavaScript 声明和与 JavaScript 值交互,或者调整 Dart 值以便它们可以被传递给并用于 JavaScript 代码。
这个 JavaScript 互操作性库通过引入对 JavaScript 值的抽象、Dart 类型层次结构(“JS 类型”)以及一个用于引入新的 Dart 类型(将 Dart 类型声明绑定到 JavaScript 值和外部成员声明绑定到 JavaScript API)的框架来实现。
这个抽象允许在 Dart 代码编译为 JavaScript 和编译为 Wasm 时都使用相同的互操作性 API。
有关用法、类型和以前 JavaScript 互操作性的更多详细信息,请参阅 https://dart.ac.cn/interop/js-interop。
注意
本库中定义的类型只提供静态保证。运行时类型根据后端而异,因此重要的是要依赖于静态功能,如转换函数,例如 toJS
,而不是运行时机制,如类型检查(is
)和转换(as
)。同样,identical
可能会根据编译器返回不同的结果。请使用 ==
来检查两个 JS 类型是否相等。
类
扩展类型
- ExternalDartReference
- 对 Dart 对象的不可见引用,可以传递给 JavaScript。
- JSAny
- 非 null 的 JavaScript 值。
- JSArray
- JavaScript 的
Array
。 - JSArrayBuffer
- JavaScript 的
ArrayBuffer
。 - JSBigInt
- JavaScript 的
BigInt
。 - JSBoolean
- JavaScript 布尔值。
- JSBoxedDartObject
- 被 JavaScript 对象包装的 Dart 对象,以便它可以安全地传递给 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
或类似的对象。 - 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<
T> 上 - 从 ExternalDartReference 到类型
T
的值的转换。 - Float32ListToJSFloat32Array 在 Float32List 上
- 从 Float32List 到 JSFloat32Array 的转换。
- Float64ListToJSFloat64Array 在 Float64List 上
- 从 Float64List 到 JSFloat64Array 的转换。
- FunctionToJSExportedDartFunction 在 Function 上
- 从 Function 到 JSExportedDartFunction 的转换。
-
FutureOfJSAnyToJSPromise 在 Future<
T> 上 - 将 Future 转换为返回值的 JSPromise。
-
FutureOfVoidToJSPromise 在 Future<
void> 上 - 将不返回值的 Future 转换为 JSPromise。
- 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 在 T 上
- 从类型为
T
的值转换为 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(
JSAny moduleName) → JSPromise< JSObject> - 使用 JavaScript 的
import()
语法动态导入具有给定moduleName
的 JavaScript 模块。
类型别名
- JSVoid = void
- JS 类型与
undefined
的等效,用于互操作成员的返回类型。
异常/错误
- NullRejectionException
- 当承诺被
null
或undefined
值拒绝时引发的异常。