sortDevices method

void sortDevices()

Sort and filter devices

Implementation

void sortDevices() {
  _devices.removeWhere(
    (element) => element.name == null || element.name == '',
  );
  // remove items having same vendorId
  final seen = <String>{};
  _devices.retainWhere((element) {
    final uniqueKey = '${element.vendorId}_${element.address}';
    if (seen.contains(uniqueKey)) {
      return false; // Remove duplicate
    } else {
      seen.add(uniqueKey); // Mark as seen
      return true; // Keep
    }
  });
  _devicesStream.add(
    _devices.where((printer) {
      final type = printer.connectionType;
      if (type != null) {
        return _scanConnectionTypes.contains(type);
      }
      // Unknown system queues appear only when both queue transports are
      // requested; a USB-only or network-only scan never guesses their type.
      return printer.isSystemPrinter &&
          _scanConnectionTypes.contains(ConnectionType.USB) &&
          _scanConnectionTypes.contains(ConnectionType.NETWORK);
    }).toList(),
  );
}