公司动态
HarmonyOS7 分布式流转入口的 UI 提示:ArkUI/ArkTS 实战拆解
文章目录前言为什么这个问题经常被写乱分布式入口要先解释当前状态实操步骤把关键代码一段段拆开分布式入口要降低不确定感写在最后前言分布式流转能力本身很强但入口文案如果只写“流转”用户很难判断会发生什么。UI 需要说清楚目标设备、当前可用性和发起后的反馈。这篇单独聊跨设备这个场景。重点不是堆 API而是让分布式入口清楚说明目标设备、当前可用性和发起后的 UI 反馈。为什么这个问题经常被写乱分布式流转入口的 UI 提示 这类内容很容易被写成“代码能跑就算讲完了”但对初学者来说这恰恰是最不够的地方。真正让人卡住的往往不是某个组件名记不住而是不知道这段代码为什么要这样拆、状态为什么要这样放、以后需求变化时应该从哪里改。所以这篇文章不只想给你一个能跑的例子更想把背后的判断过程讲清楚。你只要把这个判断过程吃透后面自己改页面、补需求、查问题时心里会稳很多。分布式入口要先解释当前状态跨设备流转不是所有用户都熟。入口如果只写“流转”很多人不知道点了会发生什么。我更倾向于把设备可用性、当前设备、目标动作一起展示清楚。实操步骤用deviceReady表示是否发现可流转设备。入口文案区分“可流转”和“未发现设备”。点击前展示目标设备名称降低用户不确定感。发起流转后用状态文案反馈不让按钮看起来没反应。状态文案操作未发现设备暂未发现附近设备去检查网络已发现设备可流转到平板发起流转流转中正在连接禁用按钮分布式能力很强但入口要讲人话去哪台设备、现在能不能去、点了以后发生什么。EntryComponentstruct ContinuationHintPage{StatedeviceReady:booleantrueStatetransferring:booleanfalseStatetargetDevice:stringMatePad ProStatehint:string附近发现可接续设备privatestartTransfer(){if(!this.deviceReady||this.transferring){return}this.transferringtruethis.hint正在连接${this.targetDevice}this.hint已向${this.targetDevice}发起流转请求this.transferringfalse}build(){Column({space:16}){Text(跨设备继续浏览).fontSize(22).fontWeight(FontWeight.Bold)Column({space:8}){Text(this.deviceReady?可流转到${this.targetDevice}:暂未发现附近设备).fontSize(17).fontWeight(FontWeight.Medium)Text(this.deviceReady?当前页面、阅读位置和筛选条件会一起带过去。:请确认两台设备登录同一账号并开启相关能力。).fontSize(13).fontColor(#666666)Text(this.hint).fontSize(12).fontColor(this.deviceReady?#0A7F3F:#D92D20)}.alignItems(HorizontalAlign.Start).padding(14).backgroundColor(#FFFFFF).borderRadius(8)Row({space:10}){Button(this.transferring?流转中:发起流转).layoutWeight(1).enabled(this.deviceReady!this.transferring).onClick(()this.startTransfer())Button(this.deviceReady?模拟离线:模拟在线).layoutWeight(1).onClick((){this.deviceReady!this.deviceReadythis.hintthis.deviceReady?附近发现可接续设备:当前没有可用设备})}.width(100%)}.padding(16).height(100%).backgroundColor(#F5F7FA)}}把关键代码一段段拆开deviceReady决定按钮启用和说明文案入口不会在不可用时误导用户。targetDevice明确告诉用户流转目标减少“点了去哪”的困惑。transferring防止重复发起也给 UI 一个即时反馈。示例按钮用于模拟在线离线真实项目里由设备发现结果驱动。分布式入口要降低不确定感跨设备流转对用户来说不是普通按钮。点下去会去哪台设备、会带过去哪些内容、当前为什么不可用都应该在入口附近说清楚。只写一个“流转”用户很难判断这个动作是否安全。示例用deviceReady控制入口可用性用targetDevice展示目标设备用transferring给发起后的即时反馈。这样按钮不会在没有设备时误导用户点击后也不会像没有反应一样停住。写在最后真实项目里设备发现、账号一致性、网络状态和权限状态都可能影响入口可用性。UI 不需要暴露所有技术细节但要把用户能理解的原因讲明白例如“暂未发现附近设备”或“请确认两台设备登录同一账号”。