diff --git a/CHANGELOG.md b/CHANGELOG.md index f054586..bc4e08f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.0.34] - 2026-06-12 + +### 修复 +- 修复 macOS 客户端打印时应用卡死、只能强制退出的问题 + +### 改进 +- 「关于我们」中「打开文档」「更新日志」等链接指向新域名 jiu.51yanmei.com + ## [1.0.33] - 2026-06-12 ### 改进 diff --git a/client/assets/config/app_info.json b/client/assets/config/app_info.json index 4c42061..d8a2adf 100644 --- a/client/assets/config/app_info.json +++ b/client/assets/config/app_info.json @@ -1,10 +1,10 @@ { "provider": "岩美技术有限公司", - "website": "https://jiu.yanmei.com", + "website": "https://jiu.51yanmei.com", "email": "yammy2023@163.com", "phone": "", "wechat": "", - "terms_url": "https://jiu.yanmei.com/terms/", - "privacy_url": "https://jiu.yanmei.com/privacy/", - "docs_url": "https://jiu.yanmei.com/docs/" + "terms_url": "https://jiu.51yanmei.com/terms/", + "privacy_url": "https://jiu.51yanmei.com/privacy/", + "docs_url": "https://jiu.51yanmei.com/docs/" } diff --git a/client/lib/core/utils/print_util_stub.dart b/client/lib/core/utils/print_util_stub.dart index dbff37c..0e44763 100644 --- a/client/lib/core/utils/print_util_stub.dart +++ b/client/lib/core/utils/print_util_stub.dart @@ -1,3 +1,5 @@ +import 'dart:io' show Platform; +import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/services.dart'; import '../errors/error_reporter.dart'; import 'package:pdf/pdf.dart'; @@ -198,8 +200,14 @@ Future printProductLabelImpl({ ), )); + // 预生成 PDF 字节,避免 macOS NSPrintPanel 打开后再调 doc.save() 导致主线程卡住。 + final bytes = await doc.save(); + if (!kIsWeb && Platform.isMacOS) { + // 让当前帧完成,再打开 macOS 原生打印面板,防止 sheet 动画与 Flutter 渲染死锁。 + await Future.delayed(Duration.zero); + } await Printing.layoutPdf( - name: '标签_${_fileTs()}', onLayout: (_) async => doc.save()); + name: '标签_${_fileTs()}', onLayout: (_) async => bytes); } catch (e, st) { reportError(e, st); throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e'); @@ -439,8 +447,12 @@ Future printStockInOrderImpl(StockInOrder order) async { ), ], )); + final bytes = await doc.save(); + if (!kIsWeb && Platform.isMacOS) { + await Future.delayed(Duration.zero); + } await Printing.layoutPdf( - name: '入库单_${_fileTs()}', onLayout: (_) async => doc.save()); + name: '入库单_${_fileTs()}', onLayout: (_) async => bytes); } catch (e, st) { reportError(e, st); throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e'); @@ -495,8 +507,12 @@ Future printStockOutOrderImpl(StockOutOrder order) async { ], )); try { + final bytes = await doc.save(); + if (!kIsWeb && Platform.isMacOS) { + await Future.delayed(Duration.zero); + } await Printing.layoutPdf( - name: '出库单_${_fileTs()}', onLayout: (_) async => doc.save()); + name: '出库单_${_fileTs()}', onLayout: (_) async => bytes); } catch (e, st) { reportError(e, st); throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');