getDevices method
Implementation
@override
Future<List<UsbDevice>> getDevices() async {
try {
// Devices the user already permitted (from any page of the same origin)
// are returned without a chooser. The chooser needs a user gesture in a
// top-level page, so only fall back to it when nothing is permitted yet
// (and the chooser is enabled).
var devices = await _permittedLedgerDevices();
if (devices.isEmpty && LedgerUsb.webDeviceChooserEnabled) {
final device = await usb.requestDevice(
RequestUSBDeviceFilters.dart(
[RequestUSBDeviceFilter(vendorId: _ledgerVendorId)],
),
);
if (device == null) {
return [];
}
devices = await _permittedLedgerDevices();
}
_foundDevices
..clear()
..addAll(devices);
return devices
.map((e) => UsbDevice(
manufacturerName: e.manufacturerName,
deviceId: 0,
vendorId: e.vendorId,
productId: e.productId,
productName: e.productName,
configurationCount: 0,
identifier: e.serialNumber,
deviceName: e.productName,
))
.toList();
} catch (e) {
debugPrint('Error in getDevices: $e');
return [];
}
}