我正在使用这个 Flutter 包:usb_device 1.0.2
在调试模式下,我的 Flutter Web 应用程序成功连接到我的 USB 设备。
我的 USB 设备是 ESP32-S3。
And I am on Flutter version 3.24.4 • channel stable • https://github.com/flutter/flutter.git
(Dart 3.5.4 • DevTools 2.37.3)
I tried in Chrome, Edge and Safari Browsers.
I am able to successfully connect my USB-device
with the usbDevice.requestDevices(...) cmd inside the browser.
但是,如果我在发布模式下运行 Flutter Web 应用程序,则设备连接弹出窗口不会显示,并且会发生错误。
即如果我尝试使用以下 cmd 运行我的 Flutter Web 应用程序(即在发布模式下),则设备连接代码会崩溃:
flutter run -d chrome --release
这是我在 Flutter Web 中调用 connect 方法:
Future<void> _connectToDevice() async {
try {
pairedDevice = await usbDevice
.requestDevices([DeviceFilter(vendorId: 0x303a, productId: 0x1001)]);
} catch (e) {
Utils.showSnackBar(e.toString(), Colors.red);
setState(() => _status = 'Error: $e');
}
}
并显示以下错误消息:
Invalid argument: Instance of 'minified:UK'
同样,在调试模式下,相同的代码也可以工作。仅当我在发布模式下运行 Flutter Web 应用程序时(即
flutter run -d chrome --release
在该连接请求时崩溃 - 即在调用 pairedDevice = await usbDevice.requestDevices(...)
时)
如何让我的 Flutter Web 应用程序在发布模式下运行?
与此同时,我找到了解决方法:
我现在使用这个 Flutter 包,名为 web_usb
并且经过一些修改以适应我的设备(特别是关于端点寻址),我现在有了一个工作解决方案,如果在
release
模式下运行也完全可以工作:
flutter run -d chrome --release