HarmonyOS鸿蒙Next中自定义Dialog如何监听弹出状态
HarmonyOS鸿蒙Next中自定义Dialog如何监听弹出状态 自定义一个Dialog,打开,关闭都使用 controller控制,如何监听 Dialog 是打开还是关闭?有没有比较好的方案。
目前采用了在在自定义Dialog中aboutToAppear 中加 show = true
, aboutToDiaAppear中 show = false
, 然后 show
是 @Link
,外部调用方可知
这个方式存在的问题是
if(!this.show){ this.dialogController.open() } if(!this.show){ this.dialogController.open() }
连续调用2次会弹2个框,有没有好点的dialog状态获取的解决方案
@CustomDialog
export struct BottomListDialog {
controller?: CustomDialogController
@Link isShow:boolean
aboutToAppear(): void {
this.isShow = true
}
aboutToDisappear(): void {
this.isShow = false
}
dialogController: CustomDialogController = new CustomDialogController({
builder: BottomListDialog({
isShow: this.isShow
}),
autoCancel: true,
alignment: DialogAlignment.Bottom,
customStyle: true
})
更多关于HarmonyOS鸿蒙Next中自定义Dialog如何监听弹出状态的实战教程也可以访问 https://www.itying.com/category-93-b0.html
目前无直接监听弹窗打开关闭api,可以在打开关闭时,设置state变量,通过变量间接判断
更多关于HarmonyOS鸿蒙Next中自定义Dialog如何监听弹出状态的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,自定义Dialog可以通过DialogController
来监听弹出状态。DialogController
提供了onShow
和onDismiss
方法,分别用于监听Dialog的显示和隐藏事件。
具体实现步骤如下:
- 创建自定义Dialog时,实例化
DialogController
。 - 在
onShow
方法中处理Dialog显示时的逻辑。 - 在
onDismiss
方法中处理Dialog隐藏时的逻辑。
示例代码如下:
import { DialogController } from '@ohos.arkui.dialog';
class CustomDialog {
private dialogController: DialogController = new DialogController();
showDialog() {
this.dialogController.showDialog({
onShow: () => {
// Dialog显示时的逻辑
},
onDismiss: () => {
// Dialog隐藏时的逻辑
}
});
}
}
通过这种方式,可以在自定义Dialog中监听其弹出状态。
在HarmonyOS鸿蒙Next中,可以通过Dialog
的setOnShowListener
和setOnDismissListener
方法来监听Dialog的弹出和关闭状态。具体实现如下:
- 设置显示监听:使用
setOnShowListener
监听Dialog的弹出。 - 设置关闭监听:使用
setOnDismissListener
监听Dialog的关闭。
示例代码:
Dialog dialog = new Dialog(context);
dialog.setOnShowListener(dialogInterface -> {
// Dialog显示时的操作
});
dialog.setOnDismissListener(dialogInterface -> {
// Dialog关闭时的操作
});
dialog.show();