
回复
本文原创发布在华为开发者社区。
本示例介绍以下五种常见的弹窗场景化案例。
基于NavDestination
组件的DIALOG模式实现此弹窗,点击《用户协议》或《隐私政策》跳转到对应网址,展现更加详细信息,同时使用用户所选项方式持久化保存到用户的选择,并通过onBackPressed
拦截到退出操作,实现用户必须点击同意或者不同意才能使用App。核心代码如下,源码参考PrivacyPolicyDialog.ets
通过全局子窗口和全局自定义弹窗实现此弹窗。网络请求过程中会先加载一个正在请求样式的全局子窗口弹窗,请求完毕之后,会加载请求结果的一个全局自定义弹窗。核心代码如下,源码参考HttpRequestDialog.ets,GlobalSubWindow.ets,GlobalCustomDialog.ets
全局子窗口
a) 获取应用的WindowStage
,使用AppStorage
方式保存
b) 显示全局子窗口
c) 关闭全局子窗口
全局自定义弹窗
通过onBackPressed
拦截到退出操作,并将弹窗弹出。核心代码如下,源码参考SideGestureInterceptDialog.ets
通过@State
和@Link
关键字,实现将弹窗返回的数据传递给上一级页面。核心代码如下,源码参考PersonInfoDialog.ets
基于NavDestination
组件的DIALOG模式实现此弹窗,弹窗弹出时呈现自下而上的动画效果,关闭是呈现自上而下的动画效果。核心代码如下,源码参考AdvertDialog.ets