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

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

阅读 583
1 个回答

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

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