鸿蒙 ArkTS 实战:写了个自用备忘录 App(桌面服务卡片 + 甘特图 + 云同步)
·
缘起
我的待办一直很乱:课表、当天要交的作业、随手想到的事、还有期中、四级这些长期目标,全混在一个列表里。市面上的备忘录要么功能太泛,要么在鸿蒙上体验不好——尤其我特别想要一块放在桌面的服务卡片,不点开就能一眼看全今天要干嘛。
找不到就自己写。用鸿蒙原生(ArkTS / ArkUI),现在手机和平板每天在用。
它长什么样


设计上刻意不做成一个大列表,而是分成三块:
- 近期:今天和明天要做的事,今天在上、明天在下
- 随手记:临时记的,可以没有日期
- 长期:底下是一张简化甘特图,每个长期目标一根横条,从开始日铺到截止日;到期当天自动在「今天」生成待办,不用手抄
几个花心思的功能
- 桌面服务卡片:不点开 App 就能看全三块内容,放不下会折叠成「还有 N 条…」
- 课表自动进待办:支持单双周、调休、非整学期课,填一次管一学期,每天自动展开到当天
- 定时提醒:每天早上 6:30 推当天待办汇总;到期的前一天单独提醒一条
- 三端同步:手机 / 平板走华为 AGC 端云同步,本地是鸿蒙的 relationalStore
开发中印象最深的几个坑(做鸿蒙卡片的可以参考)
- 服务卡片条目被静默截断:卡片端按「视觉行数」(maxLines)算容量,而数据处理端按「条目条数」算,两边口径不一致,多出来的条目会无声消失。正确做法是先按卡片实际尺寸量出能显示几条,再从数据源折叠,同时在卡片端加裁剪兜底。
- 嵌套 ForEach 的 key 陷阱:ArkUI 里外层 ForEach 的 key 不变时,内层列表永远不会重建。表现是「空列表里加第一条不显示,重启 App 才出现」,排查了很久。
- 甘特图拖动一卡一卡:三个叠加原因——刻度容器宽度用 layoutWeight 被压缩、拖动偏移量每次取整、列表 key 没带位置信息导致复用错乱。
开源
代码在 GitHub(GPL-3.0):https://github.com/jiangjiangwenyi2026-code/memo-app
这个项目会一直按「自己天天用」的标准迭代。如果你是鸿蒙开发者,对服务卡片、甘特交互有想法,欢迎提 issue 或 PR 一起改;如果只是想用,也欢迎自取。
更多推荐



所有评论(0)