Files
FamilyBook_harmonyos/entry
laoyang d4b9d08b7e 标题/备注改成常驻输入框 + 内容用墨黑 (#77)
用户 2026-11-05 两点:
  1.「任务标题里面,"台式机采购计划"这样的字样还是改成黑色吧。
     任务标题这四个字用主题色,但是输入框里面的文字用黑色。」
  2.「这个输入框本来就应该是输入框,怎么现在点了一下才变成输入框呢?
     它应该直接就是输入框,只是把文字放到输入框里面就行了。
     这样的话,点一下键盘就弹出来了,包括下面的备注也是一样。」

① 颜色:标签主题色、内容墨黑
   上一版我把 TextArea 的 fontColor 也设成 accent,整段标题变成红的,
   像报错。现在:
     · 「任务标题」四个字 → fieldLb(主题色 + Bold)
     · 框里的文字 → FbColors.ink
   备注同理。

② 常驻输入框(这是关键的结构修正)
   上一版是"只读文字 + 点一下切成 TextArea"的双态(titleEdit / noteEdit),
   所以用户看到的是"点一下才变成输入框"。
   现在**直接就是 TextArea**,值从 titleDraft / noteDraft 来。
   点输入框由系统自己聚焦 + 弹键盘,不需要 requestFocus。

   ⚠️ 必须是**受控**的:`TextArea({ text: this.titleOf() })` 是非受控,
      每次 reload() 重建组件会丢掉用户正在打的字。
   ⚠️ 删掉 titleEdit / noteEdit 两个状态(双态不存在了),
      保存判据改成"值变了没有"。
   ⚠️ 标题**空值回填、不提交**:服务端会把空标题清洗成空串 = 把标题删了。
      用户只是清空重打,不该丢标题。
   ⚠️ 备注**允许清空**:删掉备注是正常操作,所以 note 不像 title 那样回填。

③ 焦点保护(新增 titleFocus / noteFocus)
   `@Monitor(refreshTick)` 会在外部刷新时调 reload(),而 reload 会用
   服务端的值覆盖 titleDraft —— 用户正打字时被覆盖就是"打着打着字没了"。
   ⇒ 有焦点时不覆盖,失焦后再同步(onBlur → save → reload)。

编译通过,已装真机。
2026-11-05 19:48:49 +08:00
..