HarmonyOS鸿蒙Next中CustomDialogController是否必须在struct index初始化?能否剥离出来初始化?

HarmonyOS鸿蒙Next中CustomDialogController是否必须在struct index初始化?能否剥离出来初始化?

dialogController : CustomDialogController = new CustomDialogController(value:{builder: CustomDialog, cancel?: () => void, autoCancel?: boolean})

请问 这句初始化 怎么实现剥离 在自己业务处理类中初始化 ?? 我试了写在自己的业务处理类里 老是报错 'ownView’的报错 有没有解决方案 。

在布局struct Index里面有很多个 弹窗 ,都写在里面 就很臃肿 很长


更多关于HarmonyOS鸿蒙Next中CustomDialogController是否必须在struct index初始化?能否剥离出来初始化?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

18 回复

一个struct几千行

更多关于HarmonyOS鸿蒙Next中CustomDialogController是否必须在struct index初始化?能否剥离出来初始化?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


啥时候能剥离出来?

期待HarmonyOS能在未来带来更多创新的技术和理念。

我发现个办法可以抽离 @CustomDialog ,手动 new 一个 Component 就可以

new DialogView().open()
@Component
export struct DialogView {
  open(): void {
    this.createDialog()?.open()
  }

  createDialog(): CustomDialogController {
    dialogController = new CustomDialogController({
      builder: CustomDialog(),
      autoCancel: true,
      alignment: DialogAlignment.Center,
      offset: { dx: 0, dy: -20 },
      customStyle: false,
      backgroundColor: 0xd9ffffff,
      cornerRadius: 10,
      gridCount: 6
    })
    return dialogController
  }

  build() {
  }
}

这个方式我试了弹不出来啊
好痛苦。。。

怎么封装?不能封装吗?是真难用呀,比起Flutter可差远了。

插个眼

有新变化吗?CustomDialogController 能否在CustomDialog自己内部完成初始化

开发者您好,不声明全局的dialogController,只是在open的地方将dialogController初始化,dialog弹出后不能close报错已修复,请关注官网更新。

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

现在已经可以 在open的地方 初始化了?

我想把 dialog 抽到 自己的 业务处理类 去初始化,不想 布局太多业务逻辑,

目前做不到,被装饰器机制限制了,包括状态变量的使用也是如此,很麻烦。

开发者您好,该需求已被采纳,请关注官网更新。

楼主您好,这个问题已经在分析中,请耐心等待一下。

七个月了,打卡,

在HarmonyOS鸿蒙Next中,CustomDialogController的初始化不强制必须在structindex方法中进行。你可以将其剥离出来,在struct的其他方法或属性中进行初始化。CustomDialogController的初始化主要依赖于其构造函数,只要在需要使用对话框之前完成初始化即可。这种设计允许开发者根据具体需求灵活安排初始化时机,而不必局限于index方法。

在HarmonyOS鸿蒙Next中,CustomDialogController并不强制必须在struct index中初始化。你可以将其剥离出来,在需要的地方进行初始化。通常,可以在@State@Link修饰的变量中初始化,或者在onPageShow等生命周期方法中进行延迟初始化。这样可以提高代码的灵活性和可维护性。

回到顶部