HarmonyOS鸿蒙Next中这个页面需要用到两个半模态框怎么弄

HarmonyOS鸿蒙Next中这个页面需要用到两个半模态框怎么弄 目前这样写两个,会导致有一个打不开,整个页面像抽风一样的闪个不停


更多关于HarmonyOS鸿蒙Next中这个页面需要用到两个半模态框怎么弄的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

你好。

只写一个bindsheet,用变量来控制,是显示足迹,还是此刻。来控制文字和content UI的传入。

更多关于HarmonyOS鸿蒙Next中这个页面需要用到两个半模态框怎么弄的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


如果试了OK,请采纳问题,

可以,我试试哈,

谢谢🙏

一个节点只能挂一个

在HarmonyOS Next中,一个页面使用两个半模态框,可定义两个独立的@State布尔变量(如showSheet1showSheet2)分别控制显示。每个模态框通过@Builder构建内容,用.bindSheet.sheet绑定对应状态。注意设置不同的isShow参数和高度,避免动画冲突。

在 HarmonyOS NEXT 中同时使用两个半模态转场(bindSheet)会导致冲突,因为 bindSheet 是绑定到同一个页面的全局转场,同时存在多个会互相竞争触发条件,引起页面不断重建并闪烁。

解决方法:将其中一个半模态改用 NavDestination 模态或使用 Navigation 的半模态路由能力。例如,第一个用 bindSheet,第二个封装为独立的 NavDestination 页面,通过 NavPathStack.pushPath 跳转并设置 mode 为半模态。

简单代码示意:

// 第一个半模态使用 bindSheet
.bindSheet($$this.isShowSheet1, this.sheet1Builder, { ... })

// 第二个改用 Navigation 半模态
.pageMode(NavigationMode.Stack)
...
this.pathStack.pushPathByName('Sheet2', undefined, { mode: NavigationRouteMode.HalfModal });

确保同一个组件上 bindSheet 只绑定一个。

回到顶部