fix(client): 打印异常加 try-catch,错误以 SnackBar 提示用户
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -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),
|
||||||
|
|||||||
Reference in New Issue
Block a user