HarmonyOS 鸿蒙Next bindsheet如何设置使得通过router跳转到其他页面后该界面不消失

发布于 1周前 作者 eggper 来自 鸿蒙OS

HarmonyOS 鸿蒙Next bindsheet如何设置使得通过router跳转到其他页面后该界面不消失

目前测试到跳转到其他页面后就消失了,暂时使用的pannel来实现,但是pannel官方不推荐了

2 回复
  

可以通过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,

      })
  }
}

} }

//SceondPage.ets

@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视图。这可以通过以下几种方式尝试:

  1. 自定义路由逻辑:在路由跳转时,不将当前Sheet视图从堆栈中移除,而是将其隐藏或置于后台。

  2. 使用Fragment或类似机制:如果你的应用架构支持,可以考虑将Sheet视图作为一个Fragment或类似的组件,这样在路由跳转时,可以仅替换或隐藏部分内容,而不影响Sheet视图。

  3. 生命周期管理:确保Sheet视图的生命周期管理得当,避免在路由跳转时被意外销毁。

  4. 配置路由参数:检查并配置路由相关的参数,看是否有选项可以控制页面堆栈的行为。

请注意,具体的实现方式可能会因你的应用架构、使用的框架和HarmonyOS的版本而有所差异。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部