前一篇提到的问题,本篇博文提出了一个解决方案:
arkui-x LongPressGesture触发customdialog踩坑记录-CSDN博客
前一段时间遇到的这个问题,通过排除法观察,锁定为customdialog组件有bug,极为容易挂死。不论如何调整使用方法,都还是会触发挂死。
反馈给arkui团队,说是在最新版本里解决这个问题,但是最新版本什么时候出来不清楚,而项目开发还要继续。
后来甲方工程师提出了一个“stack叠层”方法,讨论下来,才发现我已经在项目中使用过这种方式。
1、基本概念和用法
就是stack容器,基本写法:
Stack() {
Text()
.height(135)
.width(241)
.borderRadius(24)
Image($r(this.imageBackgroundImageList[6]))
.height(67)
.width(85)
}
stack组件里,后出现的会覆盖前面的组件。
比如这里的image会覆盖在text上面。
利用这个特点,可以模拟很多复杂的组件交互性问题。
2、stack模拟弹窗效果,替代custom dialog
原代码是定义customdialog,通过LongPressGesture手势触发弹窗。
customdialog的特点是弹出和关闭时,都有一个动画效果,怀疑卡死的原因就是这个动画效果带来的并发渲染冲突。
现在我用stack叠层方式模拟实现类似custom dialog的弹窗,唯一的区别在于弹窗弹出和关闭没有动画效果。