在页面A使用openCustomDialog<T extends Object\>(dialogContent: ComponentContent<T\>, options?: promptAction.BaseDialogOptions)这个接口创建出来的弹窗,在弹窗内跳转页面B,效果是弹窗还显示在页面B之上,需求是希望页面B在弹窗之上,并且回到页面A时弹窗还在。
1、为什么用这个接口创建出来的弹窗会显示在页面之上?我使用了页面A的UIContext创建ComponentContent,那这个弹窗不应该只在页面A展示吗?
2、在不手动关闭弹窗进入页面B的前提下,有办法让页面跳转后,弹窗隐藏或不显示在页面B吗?
简单代码如下:
let componentContent = new ComponentContent(uiContext, contentView, args)
let customOptions: promptAction.CustomDialogOptions = {
alignment: options?.alignment || DialogAlignment.Bottom,
autoCancel: options?.autoCancel || false,
maskColor: options?.maskColor,
onWillDismiss: (action: DismissDialogAction) => {
if (options?.onWillDismiss) {
options.onWillDismiss(action)
} else {
if (action.reason == DismissReason.TOUCH_OUTSIDE) {
action.dismiss()
}
}
},
onDidAppear: () => {
if (options?.onDidAppear) {
options.onDidAppear()
}
},
onDidDisappear: () => {
if (options?.onDidDisappear) {
options.onDidDisappear()
}
},
onWillDisappear: () => {
if (options?.onWillDisappear) {
options.onWillDisappear()
}
},
builder: ()=>{contentView},
cornerRadius:{ topLeft: '8vp', topRight: '8vp', bottomLeft: '8vp', bottomRight: '8vp' }
}
let prompt = this.uiContext.getPromptAction()
prompt.openCustomDialog(this.componentContent, this.customOptions)
自定义弹窗目前暂不支持点击跳转之后返回,弹窗还在。想要实现跳的时候希望和正常页面一样跳,返回后弹窗还在,且支持一下动态刷新自定义弹框的参数,可以通过Stack布局来模拟实现Dialog的效果,同时可通过状态变量动态刷新数据
这边提供了一种可以实现路由跳转后弹框的效果: