HarmonyOS 鸿蒙Next bindsheet如何设置使得通过router跳转到其他页面后该界面不消失
HarmonyOS 鸿蒙Next bindsheet如何设置使得通过router跳转到其他页面后该界面不消失
可以通过navgation的onPop回调来控制bindsheet的isShow是否显示
Index.ets
import { router } from '@kit.ArkUI';
@Entry
@Component
struct bindSheetExample {
@State isShow: Boolean = false;
pageInfo: NavPathStack = new NavPathStack()
@Builder
myBuilder() {
Column() {
Button() {
Text(“CONTEXT”)
.onClick(() => {
this.isShow = false
this.pageInfo.pushPathByName(‘SecondPage’, ‘’, (result) => {
this.isShow = (result.result as number) === 1
})
})
}.height(50)
}
}
build() {
Navigation(this.pageInfo) {
Column() {
Button(“NoRegisterSpringback”)
.onClick(() => {
this.isShow = true
})
.fontSize(20)
.margin(10)
.bindSheet($$this.isShow, this.myBuilder(), {
height: SheetSize.MEDIUM,
blurStyle: BlurStyle.Thick,
showClose: true,
title: { title: “title”, subtitle: “subtitle” },
preferType: SheetType.CENTER,
})
}
}
}
}
@Builder
export function SecondPageBulider(){
SecondPage()
}
@Entry
@Component
export struct SecondPage{
pageInfo=new NavPathStack()
onBackPress(): boolean | void {
}
build() {
NavDestination(){
Column(){
Text(‘你好’)
.fontSize(50)
.onClick(()=>{
this.pageInfo.pop(1)
})
}
}
.onReady((navctx)=>{
this.pageInfo=navctx.pathStack
})
.width(‘100%’)
.height(‘100%’)
}
}
更多关于HarmonyOS 鸿蒙Next bindsheet如何设置使得通过router跳转到其他页面后该界面不消失的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙系统中,关于Next bindsheet(可能是指某种模态或底部弹出的Sheet视图)在通过router跳转到其他页面后保持不消失的需求,这通常涉及到页面堆栈和视图生命周期的管理。
要实现这一功能,你需要确保在路由跳转时,不销毁当前的Sheet视图。这可以通过以下几种方式尝试:
-
自定义路由逻辑:在路由跳转时,不将当前Sheet视图从堆栈中移除,而是将其隐藏或置于后台。
-
使用Fragment或类似机制:如果你的应用架构支持,可以考虑将Sheet视图作为一个Fragment或类似的组件,这样在路由跳转时,可以仅替换或隐藏部分内容,而不影响Sheet视图。
-
生命周期管理:确保Sheet视图的生命周期管理得当,避免在路由跳转时被意外销毁。
-
配置路由参数:检查并配置路由相关的参数,看是否有选项可以控制页面堆栈的行为。
请注意,具体的实现方式可能会因你的应用架构、使用的框架和HarmonyOS的版本而有所差异。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html