HarmonyOS CustomDialogController一直是undefined?

@Component
export struct DialogBug {
  dialogController: CustomDialogController = new CustomDialogController({
    builder: getPublishWidgetBuilder().builder,
    cornerRadius: 0,
    customStyle: true,
    alignment: DialogAlignment.Center,
    maskColor: 0x77000000
  })

  build() {
    Column() {
      Button(‘
      open’
      )
      .
      onClick(() => {
        this.dialogController.open()
      })
    }
    .margin({ top: 200 })
  }
}

function getPublishWidgetBuilder(): WrappedBuilder<[]> {
  return wrapBuilder(DialogBuilder)
}

@Builder
function DialogBuilder() {
  Mydialog()
}

@Component
@CustomDialog
struct Mydialog {
  dialogController?: CustomDialogController

  build() {
    Column() {
      Button(‘
      close’
      ).
      onClick(() => {
        this.dialogController?.close()
      })

    }
  }
}

补充说明:Mydialog中使用new CustomDialogController方式,dialog依然无法关闭

阅读 612
1 个回答

请参考如下修改:

@Entry
@Component
struct Test5 {
  build() {
    Column() {
      DialogBug()
    }
  }
}

@Component
export struct DialogBug {
  dialogController: CustomDialogController = new CustomDialogController({
    //builder: getPublishWidgetBuilder().builder,
    builder: Mydialog(),
    cornerRadius: 0,
    customStyle: true,
    alignment: DialogAlignment.Center,
    maskColor: 0x77000000
  })

  build() {
    Column() {
      Button('open').onClick(() => {
        this.dialogController.open()
      })
    }
    .margin({ top: 200 })
  }
}

function getPublishWidgetBuilder(): WrappedBuilder<[]> {
  return wrapBuilder(DialogBuilder)
}

@Builder
function DialogBuilder() {
  Mydialog()
}

@Component
@CustomDialog
struct Mydialog {
  dialogController?: CustomDialogController

  build() {
    Column() {
      Button('close').onClick(() => {
        if (this.dialogController != undefined) {
          this.dialogController.close()
        }
        console.info('dialogController is undefined')
      })

    }
  }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进