feat:辅助条码

This commit is contained in:
dzc committed 2025-03-20 14:32:07 +08:00
1 parent 6b3ee0e8d1
commit 93f9ec7cfd
10 files changed
+130 -52

No files matched your search

@@ -21,17 +21,29 @@ class BarcodeScanManage {
Timer? _timer;
// 二维码扫码结果
final _qrcodeScanController = StreamController<String>.broadcast();
Stream<String> get qrcodeScanStream => _qrcodeScanController.stream;
StreamController<String>? _qrcodeScanController;
Stream<String> get qrcodeScanStream {
_qrcodeScanController ??= StreamController<String>.broadcast();
return _qrcodeScanController!.stream;
}
// 扫码枪扫码结果
final _gunScanController = StreamController<String>.broadcast();
Stream<String> get gunScanStream => _gunScanController.stream;
StreamController<String>? _gunScanController;
Stream<String> get gunScanStream {
_gunScanController ??= StreamController<String>.broadcast();
return _gunScanController!.stream;
}
// 开始监听USB读头输入
void startListening() {
if (_isListening) return;
_isListening = true;
if (_qrcodeScanController?.isClosed ?? true) {
_qrcodeScanController = StreamController<String>.broadcast();
}
if (_gunScanController?.isClosed ?? true) {
_gunScanController = StreamController<String>.broadcast();
}
// 确保没有焦点的控件
FocusManager.instance.primaryFocus?.unfocus();
HardwareKeyboard.instance.addHandler(_handleKeyEvent);
@@ -59,9 +71,9 @@ class BarcodeScanManage {
final result = _buffer.toString();
logger.i("|$_tag|扫码结果: $result");
if (result.length >= 100) {
_qrcodeScanController.add(result);
_qrcodeScanController?.add(result);
} else {
_gunScanController.add(result);
_gunScanController?.add(result);
}
_buffer.clear();
}
@@ -190,15 +202,15 @@ class BarcodeScanManage {
// 释放资源
void dispose() {
stopListening();
_qrcodeScanController.close();
_gunScanController.close();
_qrcodeScanController?.close();
_gunScanController?.close();
}
void disposeQrCodeScan() {
_qrcodeScanController.close();
_qrcodeScanController?.close();
}
void disposeGunScan() {
_gunScanController.close();
_gunScanController?.close();
}
}
+16 -6
View File
@@ -12,6 +12,12 @@ class PrintManage extends BaseFacilityManage {
int paperSizeWidthMM = PaperSizeWidth.mm80;
int maxPerLine = PaperSizeMaxPerLine.mm80;
static const List<String> _printVendorIds = [
"19267",
"4070",
"10473",
];
@override
String setName() => UsbFacilityNames.print.title;
@@ -20,10 +26,14 @@ class PrintManage extends BaseFacilityManage {
final check = await super.open();
if (!check) return false;
final usbPrinter = await USBPrinterManager.discover();
final sysSetting = await AppSettingTool.getSysSetting();
final sysType = sysSetting.sysType;
final vendorId = sysType == SysType.CANTEEN ? 19267 : 4070;
final target = usbPrinter.firstWhereOrNull((v) => v.vendorId == vendorId);
USBPrinter? target = usbPrinter.firstWhereOrNull((v) {
return _printVendorIds.contains(v.vendorId ?? "-1");
});
if (ObjectUtil.isEmpty(target)) {
if (usbPrinter.length == 1) {
target = usbPrinter[0];
}
}
if (ObjectUtil.isEmpty(target)) return false;
profile = await CapabilityProfile.load();
manager = USBPrinterManager(target!);
@@ -50,9 +60,9 @@ class PrintManage extends BaseFacilityManage {
profile!,
);
List<int> bytes = [];
bytes += generator.feed(2);
bytes += generator.feed(1);
bytes += generator.image(image!);
bytes += generator.feed(2);
bytes += generator.feed(1);
bytes += generator.cut();
try {
await manager!.writeBytes(bytes);