Bootstrap

鸿蒙开发黑科技“stack叠层”替代customdialog

前一篇提到的问题,本篇博文提出了一个解决方案:

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的弹窗,唯一的区别在于弹窗弹出和关闭没有动画效果。

;