fix(client): 打印异常加 try-catch,错误以 SnackBar 提示用户

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-05-25 20:41:15 +08:00
parent 93878511e5
commit 44ffedb56a
3 changed files with 57 additions and 9 deletions
+15 -3
View File
@@ -189,7 +189,11 @@ Future<void> printProductLabelImpl({
), ),
)); ));
await Printing.layoutPdf(onLayout: (_) async => doc.save()); try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
} }
pw.Widget _label2ColRow( pw.Widget _label2ColRow(
@@ -424,7 +428,11 @@ Future<void> printStockInOrderImpl(StockInOrder order) async {
), ),
], ],
)); ));
await Printing.layoutPdf(onLayout: (_) async => doc.save()); try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
} }
Future<void> printStockOutOrderImpl(StockOutOrder order) async { Future<void> printStockOutOrderImpl(StockOutOrder order) async {
@@ -474,5 +482,9 @@ Future<void> printStockOutOrderImpl(StockOutOrder order) async {
), ),
], ],
)); ));
await Printing.layoutPdf(onLayout: (_) async => doc.save()); try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
} }
@@ -247,8 +247,16 @@ class _StockInListScreenState extends ConsumerState<StockInListScreen> {
), ),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
final order = await ref.read(stockInRepositoryProvider).get(o.id); try {
await printStockInOrder(order); final order = await ref.read(stockInRepositoryProvider).get(o.id);
await printStockInOrder(order);
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString()), backgroundColor: Colors.red),
);
}
}
}, },
child: const Text('打印', child: const Text('打印',
style: TextStyle(fontSize: 12, color: AppTheme.primary)), style: TextStyle(fontSize: 12, color: AppTheme.primary)),
@@ -690,7 +698,17 @@ class _StockInDetailDialogState extends ConsumerState<_StockInDetailDialog> {
IconButton( IconButton(
icon: const Icon(Icons.print_outlined, color: Colors.white), icon: const Icon(Icons.print_outlined, color: Colors.white),
tooltip: '打印', tooltip: '打印',
onPressed: () => printStockInOrder(_loadedOrder!), onPressed: () async {
try {
await printStockInOrder(_loadedOrder!);
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString()), backgroundColor: Colors.red),
);
}
}
},
), ),
IconButton( IconButton(
icon: const Icon(Icons.close, color: Colors.white), icon: const Icon(Icons.close, color: Colors.white),
@@ -254,8 +254,16 @@ class _StockOutListScreenState extends ConsumerState<StockOutListScreen> {
), ),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
final order = await ref.read(stockOutRepositoryProvider).get(o.id); try {
await printStockOutOrder(order); final order = await ref.read(stockOutRepositoryProvider).get(o.id);
await printStockOutOrder(order);
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString()), backgroundColor: Colors.red),
);
}
}
}, },
child: const Text('打印', child: const Text('打印',
style: TextStyle(fontSize: 12, color: AppTheme.primary)), style: TextStyle(fontSize: 12, color: AppTheme.primary)),
@@ -682,7 +690,17 @@ class _StockOutDetailDialogState extends ConsumerState<_StockOutDetailDialog> {
IconButton( IconButton(
icon: const Icon(Icons.print_outlined, color: Colors.white), icon: const Icon(Icons.print_outlined, color: Colors.white),
tooltip: '打印', tooltip: '打印',
onPressed: () => printStockOutOrder(_loadedOrder!), onPressed: () async {
try {
await printStockOutOrder(_loadedOrder!);
} catch (e) {
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(e.toString()), backgroundColor: Colors.red),
);
}
}
},
), ),
IconButton( IconButton(
icon: const Icon(Icons.close, color: Colors.white), icon: const Icon(Icons.close, color: Colors.white),