From 4cb91f3ac9a2d804ee39129f96e8754452c01826 Mon Sep 17 00:00:00 2001 From: iven Date: Thu, 4 Jun 2026 23:12:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(app):=20=E4=BF=AE=E5=A4=8D=E6=89=93?= =?UTF-8?q?=E5=BC=80=E5=B7=B2=E4=BF=9D=E5=AD=98=E6=97=A5=E8=AE=B0=E6=97=B6?= =?UTF-8?q?=E7=AC=94=E8=BF=B9=E4=B8=8D=E5=8F=AF=E8=A7=81=20=E2=80=94=20syn?= =?UTF-8?q?cStrokes=20=E5=90=8E=E7=BC=BA=E5=B0=91=20setState?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:_syncCacheAfterBuild 调用 _cache.syncStrokes() 后没有触发 setState,导致 CachedStrokesPainter 不知道缓存已更新,不执行重绘。 对比正常绘画流程(addStroke 后有 setState),加载笔迹流程遗漏了 重绘触发。添加 .then(() => setState) 后,合成图重建完成即刷新画布。 --- app/lib/features/editor/widgets/handwriting_canvas.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/lib/features/editor/widgets/handwriting_canvas.dart b/app/lib/features/editor/widgets/handwriting_canvas.dart index bebdc31..53c336c 100644 --- a/app/lib/features/editor/widgets/handwriting_canvas.dart +++ b/app/lib/features/editor/widgets/handwriting_canvas.dart @@ -134,10 +134,15 @@ class _HandwritingCanvasState extends State { } /// 在 build 完成后同步缓存(避免在 build 中触发异步操作) + /// + /// syncStrokes 重建合成图后必须调用 setState, + /// 否则 CachedStrokesPainter 不知道缓存已更新,不会触发重绘。 void _syncCacheAfterBuild() { WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted) return; - _cache.syncStrokes(widget.strokes); + _cache.syncStrokes(widget.strokes).then((_) { + if (mounted) setState(() {}); + }); }); }