HarmonyOS 自定义弹窗如何获取显示状态?

使用CustomDialogController建立自定义弹窗,controller只有open close两个方法,想咨询一下,如何获取dialog的isShowing状态呢?或者有其他办法避免重复弹窗吗?

HarmonyOS
2024-10-10 11:58:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

官方是没有获取dialog的isShowing状态的。但可以自定义一个boolean来存储显示状态。以下是写的demo请参考:

@CustomDialog  
struct CustomDialogExample {  
  cancel?: () => void  
  confirm?: () => void  
  controller: CustomDialogController  
  build() {  
    Column() {  
      Text('我是内容').fontSize(20).margin({ top: 10, bottom: 10 })  
      Flex({ justifyContent: FlexAlign.SpaceAround }) {  
        Button('cancel')  
          .onClick(() => {  
            this.controller.close()  
            if (this.cancel) {  
              this.cancel()  
            }  
          }).backgroundColor(0xffffff).fontColor(Color.Black)  
        Button('confirm')  
          .onClick(() => {  
            this.controller.close()  
            if (this.confirm) {  
              this.confirm()  
            }  
          }).backgroundColor(0xffffff).fontColor(Color.Red)  
      }.margin({ bottom: 10 })  
    }  
  }  
}  
@Entry  
@Component  
struct Index {  
  dialogController: CustomDialogController = new CustomDialogController({  
    builder: CustomDialogExample({  
      cancel: ()=> { this.onCancel() },  
      confirm: ()=> { this.onAccept() },  
    }),  
    autoCancel:true,  
    cancel: ()=> { this.onCancel()},  
  })  
  @State @Watch('dialogIsOpen') isOpen:boolean = false  
  dialogIsOpen(propName: string):void {  
    console.log('isOpen:',this.isOpen?1:0)  
  }  
  onCancel() {  
    this.isOpen = false  
    console.info('Callback when the first button is clicked')  
  }  
  onAccept() {  
    this.isOpen = false  
    console.info('Callback when the second button is clicked')  
  }  
  build() {  
    Column() {  
      Button('click me')  
        .onClick(() => {  
          this.dialogController.open()  
          this.isOpen = true  
        })  
    }.width('100%').margin({ top: 5 })  
  }  
}
分享
微博
QQ
微信
回复
2024-10-10 16:53:19
相关问题
HarmonyOS 自定义弹窗封装后不显示
337浏览 • 1回复 待解决
自定义弹窗自定义转场动画
1128浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
356浏览 • 1回复 待解决
自定义弹框的状态获取
864浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
2268浏览 • 1回复 待解决
HarmonyOS 如何制作自定义加载弹窗
359浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
1676浏览 • 1回复 待解决
HarmonyOS 全局自定义弹窗demo
286浏览 • 1回复 待解决
HarmonyOS 自定义弹窗的问题
694浏览 • 1回复 待解决
HarmonyOS 自定义弹窗CustomDialog问题
612浏览 • 1回复 待解决
如何设置自定义弹窗位置
2068浏览 • 1回复 待解决
HarmonyOS 自定义弹窗 (CustomDialog)问题
396浏览 • 1回复 待解决
HarmonyOS 自定义弹窗遮罩未全屏
665浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
566浏览 • 1回复 待解决
如何自定义popup弹窗的布局?
439浏览 • 2回复 待解决
HarmonyOS 自定义弹窗部分问题答疑
311浏览 • 1回复 待解决