不确定是编译器的限制还是我不理解的东西(很可能是最后一个:-)
我正在尝试访问一个隐藏在原生java-script类中的"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符号(上面的图片中缺少这些符号)。

ps。我在一个WebStorm项目中使用了DART-SDK2.0.0(也尝试了2.1.0-dev.8.0)和Angular-DART 5.0.0。
发布于 2018-11-14 03:21:36
有关如何将javascript API包装为可从Dart调用的内容,请参阅js package及其文档。
https://stackoverflow.com/questions/53253245
复制相似问题