HarmonyOS 鸿蒙Next CustomDialogController一直是undefined

发布于 1周前 作者 songsunli 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 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依然无法关闭


更多关于HarmonyOS 鸿蒙Next CustomDialogController一直是undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以使用CustomDialog参数类型,wrapBuilder是用来封装全局[@Builder](/user/Builder)方法。

参考如下修改:

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Test5 {
  build() {
    Column(){
      DialogBug()
    }
  }
}
[@Component](/user/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](/user/Builder)
function DialogBuilder(){
  Mydialog()
}
[@Component](/user/Component)
[@CustomDialog](/user/CustomDialog)
struct Mydialog{
  dialogController?: CustomDialogController
  build() {
    Column(){
      Button('close').onClick(() => {
        if (this.dialogController != undefined) {
          this.dialogController.close()
        }
        console.info('dialogController is undefined')
      })
    }
  }
} 

更多关于HarmonyOS 鸿蒙Next CustomDialogController一直是undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)开发中,如果遇到CustomDialogController一直是undefined的问题,这通常意味着你当前的开发环境或项目配置中缺少对相应类或组件的引用。

  1. 检查依赖库:确保你的项目中已经正确引入了包含CustomDialogController的依赖库。在鸿蒙开发中,某些UI组件或控制器可能位于特定的模块或包内,需要明确添加这些依赖。

  2. 命名空间与导入:验证你的代码文件是否已经正确导入了CustomDialogController所在的命名空间。在鸿蒙的ETS(Extensible TypeScript)或JavaScript/TypeScript环境中,遗漏import语句可能导致此类问题。

  3. 版本兼容性:确认你使用的鸿蒙SDK版本是否支持CustomDialogController。有时,新组件或功能可能仅在新版本的SDK中提供。

  4. 编译配置:检查项目的编译配置文件(如build.gradlepackage.json),确保没有配置错误或遗漏,这些错误可能影响依赖的正确解析。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部