在HarmonyOS NEXT开发中CustomDialogController一直是undefined?

在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依然无法关闭

阅读 926
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') 
      }) 
 
    } 
  } 
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏