dialog跳转新页面返回后dialog关闭

在页面1打开一个自定义Dialog 。在dialog里面设置按钮点击跳转到页面2 使用的pushUrl 的方法。 也试过pushNamedRoute 方法。返回页面1时,dialog 已经被关闭了。 希望保留页面1 的dialog 开启的状态。 或者有什么代替方案?

HarmonyOS
2024-10-08 12:53:05
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

方案1:通过Stack容器结合其它组件,使用UI组件模拟Dialog的效果,简单示例:

Stack() {  
  // 原页面内容  
  Column(){...}  
  // 模拟遮罩层  
  Text('').width('100%').height('100%').opacity(0.16) // 透明度可以自己调节一下  
    .backgroundColor(0x000000).visibility(this.visible)  
  // 此处是原Dialog中的内容,使用UI组件模拟Dialog  
  Column(){...}  
}

方案2:在页面的onPageShow()这个生命周期方法中调用open()方法打开,简单示例:

@State flag: boolean = false  
dialogController: CustomDialogController | null = new CustomDialogController({  
  builder: CustomDia({  
    cancel: this.onCancel,  
    confirm: this.onConfirm,  
    jumpPage: this.jumpPage  
  }),  
  alignment: DialogAlignment.Center  
})  
  
onPageShow(): void {  
  if (this.dialogController != null && this.flag) {  
    this.dialogController.open()  
  }  
}  
  
onPageHide(): void {  
  if (this.dialogController != null) {  
    this.dialogController.close()  
  }  
}  
  
build() {  
  Column() {  
    Button('第一个页面').onClick(() => {  
      if (this.dialogController != null) {  
        this.flag = true  
        this.dialogController.open()  
      }  
    })  
  }  
  .width('100%')  
  .height('100%')  
}  
  
jumpPage() {  
  router.pushUrl({  
    url: 'pages/Index'  
  })  
}  
  
onConfirm() {  
  console.info('------>onConfirm is clicked')  
}  
  
onCancel() {  
  console.info('------>onCancel is clicked')  
}  
  
aboutToDisappear(): void {  
  this.dialogController = null  
}
分享
微博
QQ
微信
回复
2024-10-08 16:23:40
相关问题
如何更新页面列表数据
6974浏览 • 1回复 待解决
HarmonyOS 数据改变未刷新页面
716浏览 • 0回复 待解决
怎么在进度条更新的时候刷新页面
4694浏览 • 1回复 待解决