
回复
本文原创发布在华为开发者社区。
本示例基于Navigation实现以下四种自定义弹窗。
基于Navigation.Dialog的透明页面特性,可以用于实现弹窗效果,而且Navigation.Dialog存在于路由栈中,天然可以实现切换页面弹窗不消失。
通过.transition属性分别实现背景和内容的转场动画,实现弹窗从下往上的抽屉式弹出以及关闭时从上往下收回。在弹窗内容的Column容器中传入WrappedBuilder来实现动态的自定义弹窗内容。核心代码如下。
先定义路由工具类AppRouter,并创建路由栈NavPathStack。在根页面中注册NavPathStack。定义弹窗选项类AppDialogOption,弹窗样式类AppDialogStyle,并创建自定义弹窗组件DefaultDialog。页面与弹窗,弹窗与弹窗之间主要通过路由跳转NavPathStack.pushPathByName传递参数。
点击不同按钮时,调用AppRouter.openDialog方法打开对应的自定义弹窗。核心代码如下,源码参考AppRouter.ets