From cc9db866dcf770a2e5891f768e4d4895e268d8d6 Mon Sep 17 00:00:00 2001 From: xiangsilian Date: Thu, 3 Sep 2026 21:21:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(fitting):=20=E7=94=9F=E6=88=90=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E9=A2=84=E8=A7=88=E5=9B=BE=E4=B8=8D=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E2=80=94=E2=80=94@Builder=20=E5=86=85=E6=96=B9=E6=B3=95?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E4=B8=8D=E8=A2=AB=E7=8A=B6=E6=80=81=E8=BF=BD?= =?UTF-8?q?=E8=B8=AA=EF=BC=8C=E6=94=B9=20@State=20resultSrc=20=E7=9B=B4?= =?UTF-8?q?=E7=BB=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ArkUI build 内 Image(this.previewSrc()) 方法体内部读取的 @State 不参与依赖更新, statusText 刷新但预览图停在旧帧。改为 resultSrc @State 直绑三元;生成提交即用 OSS URL 展示,转存完成后切本机副本。真机 21:05 全链路成功一次(生成+转存+对比); 此后服务端 ComfyUI 持续 503,直绑修复的默认效果图展示待服务稳定后复验。 --- app/entry/src/main/ets/pages/FittingRoomPage.ets | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/entry/src/main/ets/pages/FittingRoomPage.ets b/app/entry/src/main/ets/pages/FittingRoomPage.ets index 9917390..13ca215 100644 --- a/app/entry/src/main/ets/pages/FittingRoomPage.ets +++ b/app/entry/src/main/ets/pages/FittingRoomPage.ets @@ -69,6 +69,7 @@ struct FittingRoomPage { @State statusText: string = '' @State resultUrl: string = '' @State resultLocalPath: string = '' // 本机留存副本:展示与保存优先走它 + @State resultSrc: string = '' // 结果图就绪后的直绑图源(@Builder 内方法调用不被状态追踪,禁用) @State lastLocalPath: string = '' // 「上次结果」卡数据源 @State showOriginal: boolean = false @State showLeaveConfirm: boolean = false // 生成中离开的挽留确认 @@ -348,6 +349,7 @@ struct FittingRoomPage { return // 已被取消/离开,丢弃迟到结果 } this.resultUrl = url + this.resultSrc = url // 先用 OSS URL 展示,转存完成后切本机副本 this.statusText = '生成完成,正在留存到本机…' const saved: boolean = await this.persistResult(url) if (gen !== this.genSeq) { @@ -425,6 +427,7 @@ struct FittingRoomPage { task.on('fail', (err: number) => reject(new Error(`download fail: ${err}`))) }) this.resultLocalPath = path + this.resultSrc = fileUri.getUriFromPath(path) this.lastLocalPath = path return true } catch (_e) { @@ -571,7 +574,7 @@ struct FittingRoomPage { // 左上「模特/效果图」角标(黑 60% 胶囊,白字 12,距边 12) if (this.humanUri.length > 0) { - Text(this.previewBadge()) + Text(this.showOriginal || this.resultSrc === '' ? '模特' : '效果图') .fontSize(12) .fontColor(Color.White) .padding({ left: 12, right: 12, top: 8, bottom: 8 })