HarmonyOS 自定义弹窗如何二次封装和使用

目前自定义弹窗都是通过@CustomDialog 修饰,传入弹窗内容,然后构建UI和取消确认等方法,使用的方式是在@Entry修饰的页面中new CustomDialogController, 然后把自定义弹窗的builder传进去,在页面某个事件通过 open()调用。

如果一个页面有多个弹窗,提示内容不一样,不同的提示有不同的点击动作,是否能通过二次封装的形势,在其他ets文件中传入提示内容和点击事件的回调呢?目前尝试过,通过其他组件或者方法初始化并返回CustomDialogController ,在页面open()闪退了。

HarmonyOS
2024-08-04 18:22:17
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
kraml

建议使用promptAction.openCustomDialog接口,全局调用自定义弹窗,请参考下面代码:

let customDialogId: number = 0 
export function globalDialog() { 
  let customDialog: CustomDialogController = new CustomDialogController({ 
    builder: OptionDialog({ 
    }), 
    alignment: DialogAlignment.Bottom, 
    customStyle: true, 
    offset: { 
      dx: 0, 
      dy: -20 
    } 
  }) 
  customDialog.open() 
} 
onClick: () => { 
  promptAction.openCustomDialog({ 
    builder:showCustomDialog.bind(this) 
  }).then((dialogId: number) => { 
    customDialogId = dialogId; 
  }) 
} 
  //确认/取消弹窗 
  .onClick(() => { 
    promptAction.closeCustomDialog(customDialogId) 
  })

CustomDialogController仅在作为@CustomDialog和@Component struct的成员变量,且在@Component struct内部定义时赋值才有效,如果定义再非struct打开自定义弹窗会导致程序异常退出。

分享
微博
QQ
微信
回复
2024-08-05 12:55:52
相关问题
HarmonyOS 自定义弹窗封装后不显示
186浏览 • 1回复 待解决
HarmonyOS 关于自定义弹窗封装调用
198浏览 • 2回复 待解决
如何封装全局性的自定义弹窗
205浏览 • 1回复 待解决
HarmonyOS cocos引擎能否二次启动
267浏览 • 1回复 待解决
自定义弹窗如何嵌套使用
1407浏览 • 1回复 待解决
实现二次侧滑退出应用
1708浏览 • 1回复 待解决
自定义弹窗如何进一步封装
300浏览 • 1回复 待解决
使用自定义弹窗实现分享弹窗
418浏览 • 1回复 待解决
class二次刷新渲染数组
635浏览 • 1回复 待解决
自定义弹窗使用相关问题
819浏览 • 1回复 待解决
HarmonyOS 希望优化自定义弹窗使用
186浏览 • 1回复 待解决
自定义弹窗自定义转场动画
892浏览 • 1回复 待解决
HarmonyOS 如何制作自定义加载弹窗
227浏览 • 1回复 待解决
HarmonyOS 自定义弹窗选择
249浏览 • 1回复 待解决
如何设置自定义弹窗位置
1948浏览 • 1回复 待解决
如何自定义弹窗中再次弹窗
2109浏览 • 1回复 待解决
HarmonyOS 自定义弹窗 (CustomDialog)问题
171浏览 • 1回复 待解决