HarmonyOS CustomDialogController如何判断是否在显示?

我们有个业务需求,需要在代码判断是否显示,如果显示则隐藏。但参考这个文档

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-methods-custom-dialog-box-V5

并没有发现判断是否正在显示的接口,如果通过业务维护标志位,那未免太过繁琐。

HarmonyOS
1天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

目前自定义弹窗没有提供判断展示状态的方法

只能参考下面方案代替:

设置一个状态变量,开启弹窗时设置为true,关闭弹窗时设置为false

参考下面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 CustomDialogUser {
  @State isShow : boolean = false;//添加一个变量来表示当前弹窗是否在显示
  dialogController: CustomDialogController = new CustomDialogController({
    builder: CustomDialogExample({
      cancel: ()=> {
        this.isShow = false;//开启弹窗时设置为false
        this.onCancel()
      },
      confirm: ()=> {
        this.isShow = false;//开启弹窗时设置为false
        this.onAccept()
      },
    }),
  })

  onCancel() {
    console.info('Callback when the first button is clicked')
  }

  onAccept() {
    console.info('Callback when the second button is clicked')
  }

  build() {
    Column() {
      Button('click me')
        .onClick(() => {
          this.isShow = true;//开启弹窗时设置为true
          this.dialogController.open()
        })
    }.width('100%').margin({ top: 5 })
  }
}
分享
微博
QQ
微信
回复
1天前
相关问题
HarmonyOS 如何判断音频是否播放
399浏览 • 1回复 待解决
HarmonyOS CustomDialogController显示
304浏览 • 1回复 待解决
怎么判断customDialog是否正在显示
257浏览 • 1回复 待解决
如何判断HAP是否安装
1996浏览 • 1回复 待解决
HarmonyOS 如何判断当前网络是否可用
33浏览 • 1回复 待解决
HarmonyOS 如何判断应用是否安装
61浏览 • 1回复 待解决
HarmonyOS CustomDialogController如何封装
472浏览 • 1回复 待解决
如何判断Web组件是否全屏
2045浏览 • 1回复 待解决
如何判断是否为主线程?
1204浏览 • 1回复 待解决
HarmonyOS 判断wantUri是否合法
0浏览 • 1回复 待解决