鸿蒙应用开发实战【91】— 完整功能串联从添加到换绑的全链路 鸿蒙应用开发实战【91】— 完整功能串联从添加到换绑的全链路本文是「号码助手全栈开发系列」第 91 篇持续更新中…开源社区https://openharmonycrossplatform.csdn.net前言本篇将串联号码助手从「卡号添加」到「应用换绑」的完整功能链路展示数据如何在 DAO 层、页面状态、组件之间流转。这是前面 90 篇文章知识点的实战整合。本篇涵盖全链路流程图、添加卡号 → 绑定应用 → 管理卡号 → 换绑操作 → 状态同步每一步对应的文件、DAO 调用和状态管理。一、全链路全景图添加卡号 (AddCardPage) │ CardDao.create() ▼ 首页统计卡片 (HomePage) │ CardDao.countByStatus() ▼ 绑定应用到卡号 (AddAppPage / bindSheet) │ AppBindingDao.create() ▼ 卡号详情/应用列表 (CardDetailPage / AppDetailPage) │ AppBindingDao.findByCardId() ▼ 换绑操作 (RebindPage) │ AppBindingDao.updateStatus() ▼ 状态变更 → 首页自动更新 │ AppStorage 状态同步 ▼ 筛选 / 搜索 (StatusListPage / SearchPage) │ CardDao.findAll() predicates二、第 1 步卡号添加文件pages/AddCardPage.etsDAOCardDao.create()// AddCardPage 核心逻辑asyncaddCard(){constnowDate.now()constnewCard:CardEntity{label:this.label,phone_number:this.phoneNumber,carrier:this.carrier,color:this.selectedColor,sort_order:0,created_at:now,updated_at:now}constidawaitCardDao.create(newCard)if(id0){hilog.info(0x0000,AddCard,卡号创建成功 id%{public}d,id)// 刷新首页统计数据AppStorage.Setnumber(cardCount,awaitCardDao.countByStatus())router.back()}}第 3 步绑定应用到卡号文件pages/AddAppPage.etscommon/components/AppListItem.etsDAOAppBindingDao.create()// 从 bindSheet 确认绑定asyncconfirmBind(){constnowDate.now()constbinding:AppBindingEntity{app_name:this.selectedAppName,icon_key:this.selectedIcon,category:this.selectedCategoryasAppCategory,card_id:this.currentCardId,status:使用中,source:手动,created_at:now,updated_at:now}awaitAppBindingDao.create(binding)// 刷新卡号详情页的应用列表this.loadBindings()}第 4 步卡号详情与换绑文件pages/RebindPage.etsDAOAppBindingDao.updateStatus()// 换绑工作流旧绑定 → 注销 → 绑定新卡号asyncrebind(oldBinding:AppBindingEntity,newCardId:number){constnowDate.now()// 1. 旧绑定标记为待换绑awaitAppBindingDao.updateStatus(oldBinding.id!,待换绑)// 2. 创建新绑定constnewBinding:AppBindingEntity{...oldBinding,id:undefined,card_id:newCardId,status:使用中,created_at:now,updated_at:now}awaitAppBindingDao.create(newBinding)// 3. 刷新首页数据AppStorage.Setnumber(cardCount,awaitCardDao.countByStatus())hilog.info(0x0000,Rebind,换绑完成: %{public}s → card_%{public}d,oldBinding.app_name,newCardId)}四、状态流转矩阵┌──────────┐ 添加 ┌──────────┐ 换绑 ┌──────────┐ │ 使用中 │ ──────→ │ 待换绑 │ ──────→ │ 使用中 │ │ (初始态) │ │ │ │ (新卡) │ └──────────┘ └──────────┘ └──────────┘ │ │ │ 注销 │ 确认注销 ▼ ▼ ┌──────────┐ ┌──────────┐ │ 待注销 │ │ 已停用 │ └──────────┘ └──────────┘ │ │ 完成 ▼ ┌──────────┐ │ 已停用 │ └──────────┘五、数据流分析5.1 数据写入路径UI Page → State 变量 → DAO.create/update → RdbStore.insert/update → SQLite5.2 数据读取路径SQLite → RdbStore.query → ResultSet → DAO.parseRow → Entity → UI 渲染5.3 跨页面状态同步CardDao.countByStatus() → AppStorage.Set(cardCount, count) → Watch(cardCount) 装饰的首页统计卡片自动刷新六、涉及的完整文件列表步骤页面文件DAO 文件数据模型状态变更添加卡号AddCardPage.etsCardDao.etsCardEntity—首页统计HomePage.etsCardDao.ets聚合查询—绑定应用AddAppPage.etsAppBindingDao.etsAppBindingEntity—卡号详情CardDetailPage.etsAppBindingDao.ets关联查询—换绑操作RebindPage.etsAppBindingDao.ets状态更新待换绑→使用中注销操作AppDetailPage.etsAppBindingDao.ets状态更新待注销→已停用筛选搜索StatusListPage.etsCardDao.etspredicates 查询—小结阶段核心动作涉及文件卡号添加CardDao.create → router.backAddCardPage CardDao首页联动CardDao.countByStatus → AppStorageHomePage CardDao应用绑定AppBindingDao.create → 列表刷新AddAppPage AppBindingDao换绑旧绑定更新 → 新绑定创建RebindPage AppBindingDao状态同步Watch AppStorage → UI 自动更新所有页面联动如果这篇文章对你有帮助欢迎点赞、收藏⭐、关注你的支持是我持续创作的动力相关资源开源鸿蒙跨平台社区https://openharmonycrossplatform.csdn.netHarmonyOS 官方文档https://developer.huawei.com/consumer/cn/doc/HarmonyOS hilog文档https://developer.huawei.com/consumer/cn/doc/harmonyos-references/hilogHarmonyOS testinghttps://developer.huawei.com/consumer/cn/doc/harmonyos-guides/unit-testHarmonyOS 安全与权限https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/permissions-overview