口算题卡图标

口算题卡 · 给孩子的纯离线口算练习

按年级出题 · 速算口诀 · 错题本 · 数据统计 · 一键导出可打印题卷
Simba · 2026-07-02 · HarmonyOS 应用手记
纯离线零权限HarmonyOS ArkTS / ArkUI小工具

给孩子辅导口算时,我翻了一圈应用市场:不是开屏广告糊脸,就是要注册登录、要联网、要各种权限。我想要的其实很简单——打开就练、数据只在自己手机里、没有任何广告和弹窗。于是自己做了一个,叫「口算题卡」。

一、想给孩子一个"干净"的口算工具

口算练习本身不复杂,复杂的是围绕它的那些东西。作为家长,我不希望孩子在练题的时候被推荐、被打断、被引导去点别的地方;作为开发者,我也不想为了一个纯本地的小工具去收集任何用户数据。

所以「口算题卡」从第一行代码就定了两条底线:不联网、不申请任何系统权限。整个应用离线运行,练习记录、错题、统计全部只写进本机数据库。

二、它能做什么

速算口诀技巧界面
速算口诀:17 组妙招分级呈现,配口诀、原理与例题,还能一键「练一练」
练习数据统计界面
「我的」页:练习次数、正确率、天数与各题型掌握度一目了然
导出可打印题卷界面
导出题卷:同配置随机生成,含卷头,导出 PDF 随时打印

三、一个原则:纯离线、零权限

很多"离线"应用其实还是会申请网络权限以备后用。口算题卡的 module.json5一条 requestPermissions 都没有——没有网络、定位、通讯录、相机、麦克风、存储。技术上它就无法联网上传,隐私也就无从谈起。

唯一涉及"文件"的功能是导出题卷:生成的 PDF 只在你主动点击分享时,经 HarmonyOS 系统分享面板交给你自己选择的目标应用(打印、存文件、发给别人),应用本身不碰你的其它文件。

四、顺手记一个小 bug:@Builder 为什么"不刷新"

上架前调试,发现「我的」页做完一次练习后,统计卡片的数字不更新——练习次数还停在旧值,但同页的题型正确率、练习记录列表却是新的。

原因藏在 ArkUI 的一个细节里:那四张卡片当时是用带参数的 @Builder 渲染的,而按值传参的 @Builder,在依赖的状态变量变化时并不会重新渲染;用 ForEach 直接引用状态的列表则会。于是"列表更新、卡片不更新"。

修法:把带参 @Builder 换成独立的 @Component,用 @Prop 接收数值。父组件重渲染时新值经 @Prop 同步进子组件,卡片就会跟着刷新。小细节,但很典型。

五、哪里可以用到

「口算题卡」适合家长陪练、老师快速出卷、学生自测查漏。纯离线、无广告、无内购、无账号,装上就能用。

应用主页 → 隐私政策

HarmonyOS · 手机 / 平板 / PC · 2in1 全适配 · 华为应用市场已上架。