【HarmonyOS】逻辑类中调用通用弹窗的处理

【HarmonyOS】逻辑类中调用通用弹窗的处理

一、背景说明:

在应用开发中,为了保证APP应用内的弹框的一致性,一般而言会封装风格一致的通用弹框组件。用于提示和便捷的逻辑触发操作。比如通知,踢出登录,奖励提醒等等。

并且鸿蒙原生的customDialog不能在纯逻辑处理类中进行触发和调用,与UI类是强绑定的关系。所以对弹框进行组件子窗口封装是很有必要。

注意:目前官方对外的API还没有开放可在纯逻辑中使用的弹框。

考虑到弹框的通用性,在确定和取消按钮样式的基础上,添加对UI插槽的支持,可以将自定义的View内容填充到弹框中,并且可修改弹框的宽高。

考虑到弹框信息,用户需要有操作情景。将弹框处理队列维持信息的缓存和记录,每次操作完当前弹框后,才会显示下个弹框。因为有队列,所以对消息权限紧急的信息,添加插队处理。

二、如何设计:

  1. 首先为了实现可在纯逻辑开发类中触发弹框,我们需要将通用弹框的UI部分进行剥离,呈现在业务窗口之上,创建子窗口建立提醒交互层。

  2. 因为UI进行了剥离,所以我们需要有调用和信息传递的桥接层,此时就需要封装一个单例mgr进行管理通用弹框的队列,状态,唤起接口等。

  3. 配置弹框要展示的信息,将配置信息对象添加到DialogManager中,加入队列去展示。

// 插槽使用
 DialogUIConfigInfo.mBuilder 将修饰的函数赋值传入即可,注意调整弹框宽高

 customContain() {
   Text("你好CSDN")
}  

mDialogUIConfigInfo.mBuilder = this.customContain.bind(this)

三、剥离通用弹框UI的原理:

CustomDialog是弹框UI类,在业务层窗口之上,创建子窗口。将UI布局添加,默认隐藏。再通过封装的单例DialogMgr通过对配置对象的调度,将数据传输给CustomDialog,弹框界面唯一,每次弹框变化只是刷新数据。

通过DialogMgr进行队列的维护,并且使用DiaologType对普通和特殊两种类型的弹框,进行区分。
DialogUIConfigInfo是对弹框的信息汇总配置对象,通过设置所需要的信息,将对象传给DialogMgr进行展示使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值