不确定它是编译器限制还是我不理解的东西(可能是最后一个:-))
我正在尝试访问隐藏在本机 java 脚本类中的“DataView”结构。我让它在调试模式下工作;但是,在为部署而编译时,该解决方案不起作用。
await _transferIn(adapter, 5, 64).then((usbInTransferResult){
log.finest('_transferIn.then');
js.context['console'].callMethod('log', [usbInTransferResult]);
var rxLen = usbInTransferResult['data']['byteLength']; <<<<< Fails
for( var index = 0; index < rxLen; index++ ){
rxData.add(usbInTransferResult['data'].callMethod('getUint8', [index])); <<<<< Fails
};
log.finest(rxData);
return completer.complete(rxData);
});
上面的代码读取一个通过USB(WebUSB)接收到的数据包。它读取接收到的包长度并将每个字节复制到一个List<int>
. 在这两个地方(仅在为部署编译时读取属性byteLength
和调用方法getUint8([index])
才会失败。
下面是成功运行的图片(在调试模式下) 请注意额外的 DART 符号(上图中缺少)。
附言。我在 WebStorm 项目中使用 DART-SDK 2.0.0(也尝试过 2.1.0-dev.8.0)和 Angular-DART 5.0.0。