HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失
HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失
A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失
可以实现类似场景么
import { router } from '@kit.ArkUI'
[@CustomDialog](/user/CustomDialog)
struct CustomDialogExample {
controller?: CustomDialogController
build() {
Column({space:5}) {
Text('这是自定义弹窗')
.fontSize(30)
.height(100)
Button('跳转').onClick(()=>{
this.controller?.close()
router.pushUrl({
url: 'pages/Second',
})
})
Button('点我关闭弹窗')
.onClick(() => {
this.controller?.close()
})
}
}
}
[@Entry](/user/Entry)
[@Component](/user/Component)
struct One {
dialogController: CustomDialogController | null = new CustomDialogController({
builder: CustomDialogExample(),
autoCancel: true,
alignment: DialogAlignment.Center,
customStyle: false,
width: 300,
height: 200,
backgroundColor: Color.White,
})
// 在自定义组件即将析构销毁时将dialogController置空
aboutToDisappear() {
this.dialogController = null // 将dialogController置空
}
build() {
Column() {
Button('click me')
.onClick(() => {
this.dialogController?.open()
}).backgroundColor(0x317aff)
}.width('100%').margin({ top: 5 })
}
}
更多关于HarmonyOS 鸿蒙Next A页面弹出的dialog,在dialog里面执行路由跳转逻辑,跳转页面B后,dialog弹窗消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在a页面的页面隐藏生命周期里把弹窗关掉不行吗
在HarmonyOS鸿蒙系统中,当你在Dialog中执行路由跳转逻辑至页面B时,Dialog的消失通常是预期行为,因为Dialog通常作为模态窗口,在用户进行某些操作(如点击按钮)后关闭,并触发相应的逻辑(如页面跳转)。
若你希望在跳转后保持Dialog不消失,这通常不符合常规的UI设计原则,因为Dialog的目的是为用户提供临时的选择或信息,并在用户响应后关闭。然而,如果你有特殊需求,可以考虑以下思路:
-
使用非模态Dialog:虽然HarmonyOS标准Dialog不支持这种模式,但你可以尝试使用自定义的View或Layer来实现类似效果,通过编程控制其显示与隐藏。
-
延迟关闭Dialog:在跳转逻辑中,通过异步操作(如Handler或Coroutine)延迟Dialog的关闭时间,但这通常不推荐,因为它可能导致用户体验不佳。
-
重新设计交互:考虑是否可以通过重新设计UI交互流程来避免这种需求,例如使用底部导航栏或侧边栏菜单来实现页面间的跳转。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html