diff --git a/client/lib/core/utils/print_util_stub.dart b/client/lib/core/utils/print_util_stub.dart index c76a702..2e00774 100644 --- a/client/lib/core/utils/print_util_stub.dart +++ b/client/lib/core/utils/print_util_stub.dart @@ -501,7 +501,7 @@ Future> listLabelPrintersImpl() async { return (r.stdout as String) .split('\n') .map((s) => s.trim()) - .where((s) => s.isNotEmpty) + .where((s) => s.isNotEmpty && _isThermalName(s)) .toList(); } } catch (e) { @@ -511,7 +511,10 @@ Future> listLabelPrintersImpl() async { } if (Platform.isWindows) { try { - return (await Printing.listPrinters()).map((p) => p.name).toList(); + return (await Printing.listPrinters()) + .map((p) => p.name) + .where((n) => _isThermalName(n)) + .toList(); } catch (e) { debugPrint('[label] listPrinters 失败: $e'); } diff --git a/client/lib/screens/inventory/inventory_list_screen.dart b/client/lib/screens/inventory/inventory_list_screen.dart index 4620ca9..a27e718 100644 --- a/client/lib/screens/inventory/inventory_list_screen.dart +++ b/client/lib/screens/inventory/inventory_list_screen.dart @@ -668,27 +668,7 @@ class _InventoryListScreenState extends ConsumerState { DataCell( item.productId != null ? TextButton( - onPressed: () async { - final qrBytes = await ref - .read(productRepositoryProvider) - .getQRCodeBytes(item.productId!); - final shopInfo = ref.read(shopInfoProvider).valueOrNull; - if (context.mounted) { - await safePrint(context, () => printProductLabel( - qrBytes: qrBytes, - name: item.productName, - code: item.productCode, - series: item.series.isEmpty ? null : item.series, - spec: item.spec.isEmpty ? null : item.spec, - batchNo: item.batchNo.isEmpty ? null : item.batchNo, - productionDate: item.productionDate, - remark: item.remark.isEmpty ? null : item.remark, - shopName: shopInfo?.name ?? '', - shopAddress: shopInfo?.address ?? '', - shopPhone: shopInfo?.phone ?? '', - )); - } - }, + onPressed: () => _printLabel(context, item), child: const Text('打标签', style: TextStyle(fontSize: 12, color: AppTheme.primary)), ) diff --git a/client/lib/widgets/label_preview_dialog.dart b/client/lib/widgets/label_preview_dialog.dart index 9687c93..372d285 100644 --- a/client/lib/widgets/label_preview_dialog.dart +++ b/client/lib/widgets/label_preview_dialog.dart @@ -36,6 +36,7 @@ class _LabelPreviewDialogState extends State { List _printers = []; String? _printer; bool _printing = false; + bool _printersChecked = false; String _status = ''; @override @@ -63,6 +64,7 @@ class _LabelPreviewDialogState extends State { setState(() { _printers = printers; _printer = selected; + _printersChecked = true; }); } @@ -147,6 +149,7 @@ class _LabelPreviewDialogState extends State { _printing = false; _status = '完成,共打印 $done 张'; }); + Navigator.of(context).pop(); } } @@ -329,8 +332,9 @@ class _LabelPreviewDialogState extends State { const SizedBox(width: 8), Expanded( child: _printers.isEmpty - ? const Text('检测中或未检测到打印机...', - style: TextStyle( + ? Text( + _printersChecked ? '无打印机可用' : '正在检测打印机...', + style: const TextStyle( fontSize: 13, color: AppTheme.textSecondary)) : DropdownButtonHideUnderline( @@ -419,7 +423,9 @@ class _LabelPreviewDialogState extends State { ), const SizedBox(width: 8), FilledButton( - onPressed: (_printing || totalCount == 0) ? null : _doPrint, + onPressed: (_printing || totalCount == 0 || _printer == null) + ? null + : _doPrint, child: Text( _printing ? '打印中...' : '打印 $totalCount 张'), ),