startUsbScan method

Future startUsbScan({
  1. Duration refreshDuration = const Duration(seconds: 5),
})

Implementation

Future<dynamic> startUsbScan({
  Duration refreshDuration = const Duration(seconds: 5),
}) async {
  if (Platform.isAndroid || Platform.isMacOS) {
    _usbSubscription?.cancel();
    _usbSubscription =
        Stream.periodic(refreshDuration, (x) => x).listen((event) async {
      List<Printer> list = [];
      final devices =
          await FlutterThermalPrinterPlatform.instance.startUsbScan();
      for (var e in devices) {
        final map =
            Map<String, dynamic>.from(e is String ? jsonDecode(e) : e);
        final device = Printer(
          vendorId: map['vendorId']?.toString(),
          productId: map['productId']?.toString(),
          name: map['name']?.toString(),
          connectionType: ConnectionType.USB,
          address: map['bsdPath']?.toString() ?? map['vendorId']?.toString(),
          isConnected: false,
        );
        final isConnected =
            await FlutterThermalPrinterPlatform.instance.isConnected(device);
        device.isConnected = isConnected;
        list.add(device);
      }
      _devicesstream.add(list);
    });
    return;
  } else {
    throw Exception('Unsupported Platform');
  }
}