HarmonyOS 怎么在页面退出时关闭所有页面内打开的弹窗

一个page页面中,有一些展示内容展示是通过自定义弹窗做的,有一种情况:正处于打开某些弹窗时,又一个异常提示弹窗自动弹出,点击确认退出了这个页面,但是之前被打开的弹窗还在。怎么在页面退出时关闭所有页面内打开的弹窗

HarmonyOS
2024-12-24 16:03:55
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
Excelsior_abit

可以创建一个全局弹窗管理的对象,注册全局事件来维护弹窗对象。参考代码如下:

onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void {
  let eventhub = this.context.eventHub;
  AppStorage.setOrCreate('dialogList', []);
  eventhub.on('addDiaLog', (data: CustomDialogController ) => {
  let dialogList:SubscribedAbstractProperty<CustomDialogController[]> = AppStorage.link('dialogList');
  let dialoginfo:CustomDialogController[] = dialogList.get();
  dialoginfo.push(data);
  dialogList.set(dialoginfo)
});
eventhub.on('closeAllDiaLog', ()=>{
  let dialogList:SubscribedAbstractProperty<CustomDialogController[]> = AppStorage.link('dialogList');
  let dialoginfo:CustomDialogController[] = dialogList.get();
  for (let elem of dialoginfo.values()) {
    elem.close();
  }
})

hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
}

然后在弹框弹出的地方使用

this.context.eventHub.emit('addDiaLog', this.controller);

退出页面的地方使用

this.context.eventHub.emit('closeAllDiaLog');
分享
微博
QQ
微信
回复
2024-12-24 18:34:26
相关问题
HarmonyOS 如何一键关闭之前所有页面
446浏览 • 1回复 待解决
页面关闭如何传递数据
2087浏览 • 1回复 待解决