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 类型是否相等。

JS
JavaScript 互操作性声明的注解。
JSExport
注解,允许 Dart 类通过使用 dart:js_interopcreateJSInteropWrapper 被包装在一个 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

扩展

BoolToJSBooleanbool
boolJSBoolean 的转换。
ByteBufferToJSArrayBufferByteBuffer
ByteBufferJSArrayBuffer 的转换。
ByteDataToJSDataViewByteData
ByteDataJSDataView 的转换。
DoubleToJSNumberdouble
doubleJSNumber 的转换。
ExternalDartReferenceToObjectExternalDartReference<T>
ExternalDartReference 到类型 T 的值的转换。
Float32ListToJSFloat32ArrayFloat32List
Float32ListJSFloat32Array 的转换。
Float64ListToJSFloat64ArrayFloat64List
Float64ListJSFloat64Array 的转换。
FunctionToJSExportedDartFunctionFunction
FunctionJSExportedDartFunction 的转换。
FutureOfJSAnyToJSPromiseFuture<T>
Future 转换为返回值的 JSPromise
FutureOfVoidToJSPromiseFuture<void>
将不返回值的 Future 转换为 JSPromise
Int16ListToJSInt16ArrayInt16List
Int16ListJSInt16Array 的转换。
Int32ListToJSInt32ArrayInt32List
Int32ListJSInt32Array 的转换。
Int8ListToJSInt8ArrayInt8List
Int8ListJSInt8Array 的转换。
JSAnyOperatorExtensionJSAny?
通用JavaScript运算符。
JSAnyUtilityExtensionJSAny?
适用于任何JavaScript值的常用实用函数。
JSArrayBufferToByteBufferJSArrayBuffer
JSArrayBufferByteBuffer 的转换。
JSArrayToListJSArray<T>
JSArrayList 的转换。
JSBooleanToBoolJSBoolean
JSBooleanbool 的转换。
JSBoxedDartObjectToObjectJSBoxedDartObject
JSBoxedDartObjectObject 的转换。
JSDataViewToByteDataJSDataView
JSDataViewByteData 的转换。
JSExportedDartFunctionToFunctionJSExportedDartFunction
JSExportedDartFunctionFunction 的转换。
JSFloat32ArrayToFloat32ListJSFloat32Array
JSFloat32ArrayFloat32List 的转换。
JSFloat64ArrayToFloat64ListJSFloat64Array
JSFloat64ArrayFloat64List 的转换。
JSFunctionUtilExtensionJSFunction
针对 JSFunction 的实用扩展。
JSInt16ArrayToInt16ListJSInt16Array
JSInt16ArrayInt16List 的转换。
JSInt32ArrayToInt32ListJSInt32Array
JSInt32ArrayInt32List 的转换。
JSInt8ArrayToInt8ListJSInt8Array
JSInt8ArrayInt8List 的转换。
JSNumberToNumberJSNumber
JSNumberdoubleint 的转换。
JSPromiseToFutureJSPromise<T>
JSPromiseFuture 的转换。
JSStringToStringJSString
JSStringString 的转换。
JSUint16ArrayToInt16ListJSUint16Array
JSUint16ArrayUint16List 的转换。
JSUint32ArrayToUint32ListJSUint32Array
JSUint32ArrayUint32List 的转换。
JSUint8ArrayToUint8ListJSUint8Array 上。
JSUint8ArrayUint8List 的转换。
JSUint8ClampedArrayToUint8ClampedListJSUint8ClampedArray 上。
JSUint8ClampedArrayUint8ClampedList 的转换。
ListToJSArrayList<T>
ListJSArray 的转换。
NullableObjectUtilExtensionObject? 上
Object? 提供的常用工具函数。
NullableUndefineableJSAnyExtensionJSAny? 上
辅助方法,用于确定一个值是否是 JavaScript 的 undefinednull
NumToJSExtensionnum
numJSNumber 的转换。
ObjectToExternalDartReference 在 T 上
从类型为 T 的值转换为 ExternalDartReference
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(JSAny moduleName) JSPromise<JSObject>
使用 JavaScript 的 import() 语法动态导入具有给定 moduleName 的 JavaScript 模块。

类型别名

JSVoid = void
JS 类型与 undefined 的等效,用于互操作成员的返回类型。

异常/错误

NullRejectionException
当承诺被 nullundefined 值拒绝时引发的异常。