作为子页面的根容器,用于显示Navigation的内容区。
该组件从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
该组件从API version 11开始默认支持安全区避让特性(默认值为:expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])),开发者可以重写该属性覆盖默认行为,API version 11之前的版本需配合expandSafeArea属性实现安全区避让。
NavDestination组件必须配合Navigation使用,作为Navigation目的页面的根节点,单独使用只能作为普通容器组件,不具备路由相关属性能力。
如果路由栈中间页面的生命周期发生变化,跳转之前的栈顶NavDestination的生命周期(onWillShow, onShown, onHidden, onWillDisappear)与跳转之后的栈顶NavDestination的生命周期(onWillShow, onShown, onHidden, onWillDisappear)均在最后触发。
NavDestination未设置主副标题并且没有返回键时,不显示标题栏。
不建议设置位置、大小等布局相关属性,可能会造成页面显示异常。例如在NavDestination上添加zIndex属性时,会覆盖掉系统设置的层级,可能导致出现显示异常。
NavDestination()
创建Navigation子页面的根容器。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
title(value: string | CustomBuilder | NavDestinationCommonTitle | NavDestinationCustomTitle | Resource, options?: NavigationTitleOptions)
设置页面标题。字符串超长时,如果不设置副标题,先缩小再换行2行后以"..."截断。如果设置副标题,先缩小后以"..."截断。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | string | CustomBuilder | NavDestinationCommonTitle | NavDestinationCustomTitle | Resource14+ | 是 | 页面标题。 |
| options12+ | NavigationTitleOptions | 否 | 标题栏选项。 模型约束: 此接口仅可在Stage模型下使用。 |
hideTitleBar(value: boolean)
设置是否隐藏标题栏。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | boolean | 是 | 是否隐藏标题栏。 默认值:false true:隐藏标题栏。 false:显示标题栏。 |
hideTitleBar(hide: boolean, animated: boolean)
设置是否隐藏标题栏。与hideTitleBar相比,新增标题栏显隐时是否使用动画。
元服务API: 从API version 13开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hide | boolean | 是 | 是否隐藏标题栏。 默认值:false true:隐藏标题栏。 false:显示标题栏。 |
| animated | boolean | 是 | 设置是否使用动画显隐标题栏。 默认值:false true:使用动画显示隐藏标题栏。 false:不使用动画显示隐藏标题栏。 |
fullScreenOverlay(fullScreenOverlay: Optional<boolean>)
设置NavDestination是否以全屏覆盖模式显示。
当参数设置为true时,在Navigation分栏模式下,当前页面会覆盖整个Navigation容器,包括NavBar和内容区。该配置作用于当前NavDestination的所有实例;当路由栈中已有页面以全屏覆盖模式显示时,其后入栈的DIALOG页面与未设置fullScreenOverlay为false的STANDARD页面也会继承为全屏覆盖显示。未通过该接口设置时,NavDestination默认是普通显示模式,遵循Navigation分栏显示规则。
起始版本: 26.0.0
元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| fullScreenOverlay | Optional<boolean> | 是 | 是否以全屏覆盖模式显示。 true:全屏覆盖模式,覆盖整个Navigation容器。 false:普通显示模式,遵循Navigation分栏显示规则。指定为false的STANDARD类型页面不会继承全屏显示。 undefined:普通显示模式,遵循Navigation分栏显示规则。指定为undefined的页面会继承全屏显示。 |
toolbarConfiguration(toolbarParam: Array<ToolbarItem> | CustomBuilder, options?: NavigationToolbarOptions)
设置工具栏内容。未调用本接口时不显示工具栏。
从API version 20开始,该接口支持在attributeModifier中调用。
不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。
元服务API: 从API version 13开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| toolbarParam | Array<ToolbarItem> | CustomBuilder | 是 | 工具栏内容。 使用Array<ToolbarItem>写法设置的工具栏有如下特性: -工具栏所有选项均分底部工具栏,在每个均分内容区布局文本和图标。 -竖屏模式最多支持显示5个图标,多余的图标会被放入自动生成的更多图标中,点击更多图标,可以展示剩余内容。横屏模式时,如果为Split模式,仍按照竖屏模式显示,如果为Stack模式需配合menus属性的Array<NavigationMenuItem>使用,底部工具栏会自动隐藏,同时底部工具栏所有选项移动至页面右上角菜单。 使用CustomBuilder写法为用户自定义工具栏选项,不具备以上功能。 |
| options | NavigationToolbarOptions | 否 | 工具栏选项。包含工具栏背景颜色、工具栏背景模糊样式及模糊选项、工具栏背景属性、工具栏布局方式、是否隐藏工具栏的文本、工具栏更多图标的菜单选项。 |
hideToolBar(hide: boolean, animated?: boolean)
设置是否隐藏工具栏。
元服务API: 从API version 13开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hide | boolean | 是 | 是否隐藏工具栏。 默认值:false true:隐藏工具栏。 false:显示工具栏。 |
| animated | boolean | 否 | 设置是否使用动画显隐工具栏。 默认值:false true:使用动画显示隐藏工具栏。 false:不使用动画显示隐藏工具栏。 |
mode(value: NavDestinationMode)
设置NavDestination类型,不支持动态修改。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | NavDestinationMode | 是 | NavDestination类型。 默认值:NavDestinationMode.STANDARD |
backButtonIcon(value: ResourceStr | PixelMap | SymbolGlyphModifier)
设置标题栏返回键图标。
从API version 12开始,该接口支持在attributeModifier中调用。
不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| value | ResourceStr | PixelMap | SymbolGlyphModifier12+ | 是 | 标题栏返回键图标。 |
backButtonIcon(icon: ResourceStr | PixelMap | SymbolGlyphModifier, accessibilityText?: ResourceStr)
设置标题栏返回键图标和无障碍播报内容。
该接口不支持在attributeModifier中调用。
不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。
元服务API: 从API version 19开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| icon | ResourceStr | PixelMap | SymbolGlyphModifier | 是 | 标题栏返回键图标。 |
| accessibilityText | ResourceStr | 否 | 返回键无障碍播报内容。 默认值:系统语言是中文时为“返回”,系统语言是英文时为“back”。 |
ignoreLayoutSafeArea(types?: Array<LayoutSafeAreaType>, edges?: Array<LayoutSafeAreaEdge>)
控制组件的布局,使其扩展到非安全区域。
组件设置ignoreLayoutSafeArea之后生效的条件为:
设置LayoutSafeAreaType.SYSTEM时,组件的边界与非安全区域重合时组件能够延伸到非安全区域下。
若组件扩展到非安全区域内,此时在非安全区域里触发的事件(例如:点击事件)等可能会被系统拦截,优先响应状态栏等系统组件。
组件想要扩展到非安全区域内,需隐藏或者设置标题栏和工具栏为STACK模式。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| types | Array <LayoutSafeAreaType> | 否 | 配置扩展安全区域的类型。 默认值: [LayoutSafeAreaType.SYSTEM] |
| edges | Array <LayoutSafeAreaEdge> | 否 | 配置扩展安全区域的方向。 默认值: [LayoutSafeAreaEdge.TOP, LayoutSafeAreaEdge.BOTTOM]。 |
systemBarStyle(style: Optional<SystemBarStyle>)
当Navigation中显示当前NavDestination时,设置对应系统状态栏的样式。
必须配合Navigation使用,作为其Navigation目的页面的根节点时才能生效。
其他使用限制请参考Navigation对应的systemBarStyle属性说明。
从API version 20开始,该接口支持在attributeModifier中调用。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| style | Optional<SystemBarStyle> | 是 | 系统状态栏样式。 |
systemTransition(type: NavigationSystemTransitionType)
设置NavDestination系统转场动画,支持分别设置系统标题栏动画和内容动画。
元服务API: 从API version 14开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| type | NavigationSystemTransitionType | 是 | 系统转场动画类型。 默认值:NavigationSystemTransitionType.DEFAULT |
recoverable(recoverable: Optional<boolean>)
配置NavDestination是否可恢复。如配置为可恢复,当应用进程异常退出并重新冷启动时,可自动创建该NavDestination。该功能需NavDestination对应的Navigation也配置了可恢复属性recoverable。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| recoverable | Optional<boolean> | 是 | NavDestination是否可恢复,默认为可恢复。 默认值:true true:NavDestination可恢复。 false:NavDestination不可恢复。 |
bindToScrollable(scrollers: Array<Scroller>)
绑定NavDestination组件和可滚动容器组件(支持List、Scroll、Grid、WaterFlow),当滑动可滚动容器组件时,会触发所有与其绑定的NavDestination组件的标题栏和工具栏的显示和隐藏动效,上滑隐藏,下滑显示。一个NavDestination可与多个可滚动容器组件绑定,一个可滚动容器组件也可与多个NavDestination绑定。使用示例参见示例1。
只有NavDestination的标题栏或工具栏设置为可见时,联动效果才会生效。
当多个可滚动容器组件绑定了同一个NavDestination组件时,滚动任何一个容器都会触发标题栏和工具栏的显示或隐藏效果。且当任何一个可滚动容器组件滑动到底部或顶部位置时,会立即触发标题栏和工具栏的显示动效。因此,为了获得最佳用户体验,不建议同时触发多个可滚动容器组件的滚动事件。
从API version 22开始,该接口支持在attributeModifier中调用。
元服务API: 从API version 14开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scrollers | Array<Scroller> | 是 | 可滚动容器组件的控制器。 |
bindToNestedScrollable(scrollInfos: Array<NestedScrollInfo>)
绑定NavDestination组件和嵌套的可滚动容器组件(支持List、Scroll、Grid、WaterFlow),当滑动父组件或子组件时,会触发所有与其绑定的NavDestination组件的标题栏和工具栏的显示和隐藏动效,上滑隐藏,下滑显示。一个NavDestination可与多个嵌套的可滚动容器组件绑定,嵌套的可滚动容器组件也可与多个NavDestination绑定。使用示例参见示例1。
只有NavDestination的标题栏或工具栏设置为可见时,联动效果才会生效。
当多个可滚动容器组件绑定了同一个NavDestination组件时,滚动任何一个容器都会触发标题栏和工具栏的显示或隐藏效果。且当任何一个可滚动容器组件滑动到底部或顶部位置时,会立即触发标题栏和工具栏的显示动效。因此,为了获得最佳用户体验,不建议同时触发多个可滚动容器组件的滚动事件。
从API version 22开始,该接口支持在attributeModifier中调用。
元服务API: 从API version 14开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| scrollInfos | Array<NestedScrollInfo> | 是 | 嵌套的可滚动容器组件的控制器。 |
hideBackButton(hide: Optional<boolean>)
设置是否隐藏标题栏中的返回键。
元服务API: 从API version 15开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| hide | Optional<boolean> | 是 | 是否隐藏标题栏中的返回键。 默认值:false true:隐藏返回键。 false:显示返回键。 |
customTransition(delegate: NavDestinationTransitionDelegate)
设置NavDestination自定义转场动画。
元服务API: 从API version 15开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| delegate | NavDestinationTransitionDelegate | 是 | NavDestination自定义动画的代理函数。 |
preferredOrientation(orientation: Optional<Orientation>)
设置NavDestination对应的显示方向。转场到该NavDestination后,系统也会将应用主窗口切到该显示方向。
该属性满足如下全部条件时才有效:
设置显示方向的实际效果依赖于具体的设备支持情况,具体参考窗口的setPreferredOrientation接口。
元服务API: 从API version 19开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| orientation | Optional<Orientation> | 是 | NavDestination页面对应的Orientation。 |
enableStatusBar(enabled: Optional<boolean>, animated?: boolean)
设置进入该NavDestination后,显示或者隐藏系统的状态栏。
该属性满足如下全部条件时才生效:
设置系统状态栏的实际效果依赖于具体的设备支持情况,具体参考窗口的setSpecificSystemBarEnabled接口。
元服务API: 从API version 19开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| enabled | Optional<boolean> | 是 | 进入该NavDestination后,系统状态栏的显示/隐藏状态。 true:显示状态栏。 false:隐藏状态栏。 |
| animated | boolean | 否 | 是否使用动画的方式显示/隐藏系统状态栏。 默认值:false true:使用动画的方式显示/隐藏系统状态栏。 false:不使用动画的方式显示/隐藏系统状态栏。 |
onShown(callback: Callback<VisibilityChangeReason>)
当该NavDestination页面显示时触发此回调。从API version 21开始,支持通过VisibilityChangeReason说明onShown触发的原因。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Callback<VisibilityChangeReason>21+ | 是 | 当该NavDestination页面显示时触发此回调。 在API version 21之前,当NavDestination页面显示时触发回调。 从API version 21开始,回调会提供入参VisibilityChangeReason以说明onShown触发的原因。 |
onWillAppear(callback: Callback<void>)
当该NavDestination挂载之前触发此回调。在该回调中允许修改路由栈,当前帧生效。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Callback<void> | 是 | 当该NavDestination挂载之前触发此回调。在该回调中允许修改路由栈,当前帧生效。 |
onWillShow(callback: Callback<void>)
当该NavDestination显示之前触发此回调。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Callback<void> | 是 | 当该NavDestination显示之前触发此回调。 |
onWillHide(callback: Callback<void>)
当该NavDestination隐藏之前触发此回调。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Callback<void> | 是 | 当该NavDestination隐藏之前触发此回调。 |
onWillDisappear(callback: Callback<void>)
当该NavDestination卸载之前触发的生命周期(有转场动画时,在转场动画开始之前触发)。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Callback<void> | 是 | 当该NavDestination卸载之前触发的生命周期(有转场动画时,在转场动画开始之前触发)。 |
onBackPressed(callback: () => boolean)
当与Navigation绑定的导航控制器中存在内容时,此回调生效。当点击返回键时,触发该回调。
返回值为true时,表示重写返回键逻辑,返回值为false时,表示回退到上一个页面。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | () => boolean | 是 | 当与Navigation绑定的导航控制器中存在内容时,此回调生效。当点击返回键时,触发该回调。 |
onReady(callback: import('../api/@ohos.base').Callback<NavDestinationContext>)
当NavDestination即将构建子组件之前会触发此回调。
元服务API: 从API version 11开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | import('../api/@ohos.base').Callback<NavDestinationContext> | 是 | 当NavDestination即将构建子组件之前会触发此回调。 |
onSaveState(callback: Optional<SaveStateCallback>)
设置自定义页面状态保存回调。在NavDestination页面的onHidden生命周期后触发该回调,用于保存当前页面的自定义状态,以便页面后续重建时恢复。
该回调配合Navigation的configuration接口使用。页面创建时传入的初始参数由Navigation单独保留,开发者只需在该回调中返回自定义页面状态。返回的状态对象必须可序列化;页面重建时,保存的状态会通过onRestoreState回调传入。
起始版本: 26.0.0
元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Optional<SaveStateCallback> | 是 | 页面状态保存回调。 |
onRestoreState(callback: Optional<RestoreStateCallback>)
设置自定义页面状态恢复回调。当NavDestination页面被重建时触发该回调,用于恢复页面自定义状态。
该回调配合Navigation的configuration接口使用。页面重建时,系统会将onSaveState返回并保存的状态作为入参传入该回调;如果没有保存自定义状态,则入参为null。
起始版本: 26.0.0
元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Optional<RestoreStateCallback> | 是 | 页面状态恢复回调。 |
onResult(callback: Optional<Callback<ESObject>>)
NavDestination返回时触发该回调。
元服务API: 从API version 15开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Optional<Callback<ESObject>> | 是 | 页面返回回调,入参为pop、popToName、popToIndex接口传入的result参数。如果不传该参数,入参为undefined。 |
onActive(callback: Optional<Callback<NavDestinationActiveReason>>)
NavDestination处于激活态(处于栈顶可操作,且上层无特殊组件遮挡)时,触发该回调。使用示例参见示例5。
元服务API: 从API version 17开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Optional<Callback<NavDestinationActiveReason>> | 是 | NavDestination由非激活态变为激活态的原因。 |
onInactive(callback: Optional<Callback<NavDestinationActiveReason>>)
NavDestination处于非激活态(处于非栈顶不可操作,或处于栈顶时上层有特殊组件遮挡)时,触发该回调。使用示例参见示例5。
元服务API: 从API version 17开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| callback | Optional<Callback<NavDestinationActiveReason>> | 是 | NavDestination由激活态变为非激活态的原因。 |
onNewParam(callback: Optional<Callback<ESObject>>)
当之前存在于栈中的NavDestination页面通过launchMode.MOVE_TO_TOP_SINGLETON或launchMode.POP_TO_SINGLETON移动到栈顶时,触发该回调。
元服务API: 从API version 19开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
type SaveStateCallback = () => Record<string, Object> | null
页面状态保存回调。
起始版本: 26.0.0
元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
| 类型 | 说明 |
|---|---|
| Record<string, Object> | null | 自定义页面状态。状态对象必须可序列化,否则不会被保存;返回null表示不保存页面状态。 |
type RestoreStateCallback = (savedState: Record<string, Object> | null) => void
页面状态恢复回调。
起始版本: 26.0.0
元服务API: 从API版本26.0.0开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| savedState | Record<string, Object> | null | 是 | onSaveState保存的自定义页面状态。没有保存自定义状态时为null。 |
getConfigInRouteMap(): RouteMapConfig | undefined
获取当前NavDestination的路由配置信息。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
返回值:
| 类型 | 说明 |
|---|---|
| RouteMapConfig | undefined | 当前页面路由配置信息。 当该页面不是通过路由表配置时返回undefined。 |
路由配置信息。
元服务API: 从API version 12开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 类型 | 只读 | 可选 | 说明 |
|---|---|---|---|---|
| name | string | 否 | 否 | 页面名称。 |
| pageSourceFile | string | 否 | 否 | 页面在当前包中的路径。 |
| data | Object | 否 | 否 | 页面自定义字段信息。 |
嵌套可滚动容器组件信息
元服务API: 从API version 14开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
NavDestination可见性发生变化的原因。
元服务API: 从API version 21开始,该接口支持在元服务中使用。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
| 名称 | 值 | 说明 |
|---|---|---|
| TRANSITION | 0 | 通过页面跳转的方式使NavDestination可见性发生变化。 |
| CONTENT_COVER | 1 | 通过全模态的开启和关闭使NavDestination可见性发生变化。 |
| APP_STATE | 2 | 通过前后台切换使NavDestination可见性发生变化。 |
type Orientation = import('../api/@ohos.window').default.Orientation
Orientation实例对象。
模型约束: 此接口仅可在Stage模型下使用。
系统能力: SystemCapability.ArkUI.ArkUI.Full
元服务API: 从API version 19开始,该接口支持在元服务中使用。
| 类型 | 说明 |
|---|---|
| import('../api/@ohos.window').default.Orientation | 返回Orientation实例对象。 |
以下示例主要演示NavDestination绑定可滚动容器组件来实现滚动内容时触发标题栏和工具栏显示隐藏的效果。
import { SymbolGlyphModifier } from '@kit.ArkUI';
@Component
struct MyPageOne {
private listScroller: Scroller = new Scroller();
private scrollScroller: Scroller = new Scroller();
private arr: number[] = [];
aboutToAppear(): void {
for (let i = 0; i < 30; i++) {
this.arr.push(i);
}
}
build() {
NavDestination() {
Scroll(this.scrollScroller) {
Column() {
List({ space: 0, initialIndex: 0, scroller: this.listScroller }) {
ForEach(this.arr, (item: number, index: number) => {
ListItem() {
Text('' + item)
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.width('90%')
.margin({ left: '5%' })
.borderRadius(10)
.backgroundColor(Color.Gray)
}
}, (item: number) => item.toString());
}.width('100%').height('80%').scrollBar(BarState.Off)
.nestedScroll({ scrollForward: NestedScrollMode.SELF_FIRST, scrollBackward: NestedScrollMode.SELF_FIRST })
ForEach(this.arr, (item: number, index: number) => {
ListItem() {
Text('' + item)
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.width('90%')
.margin({ top: '5%' })
.borderRadius(10)
.backgroundColor(Color.Pink)
}
}, (item: number) => item.toString());
}
}
.width('100%')
.scrollBar(BarState.Off)
.scrollable(ScrollDirection.Vertical)
.edgeEffect(EdgeEffect.Spring)
}
.title('PageOne', { backgroundColor: Color.Yellow, barStyle: BarStyle.STACK })
.toolbarConfiguration([
{
// $r('sys.symbol.phone_badge_star')需要替换为开发者所需的资源文件
value: 'item1',
symbolIcon: new SymbolGlyphModifier($r('sys.symbol.phone_badge_star'))
}
], { backgroundColor: Color.Orange, barStyle: BarStyle.STACK })
// 绑定有父子关系的可滚动容器组件
.bindToNestedScrollable([{ parent: this.scrollScroller, child: this.listScroller }])
}
}
@Component
struct MyPageTwo {
private listScroller: Scroller = new Scroller();
private arr: number[] = [];
aboutToAppear(): void {
for (let i = 0; i < 30; i++) {
this.arr.push(i);
}
}
build() {
NavDestination() {
List({ scroller: this.listScroller }) {
ForEach(this.arr, (item: number, index: number) => {
ListItem() {
Text('' + item)
.height(100)
.fontSize(16)
.textAlign(TextAlign.Center)
.width('90%')
.margin({ left: '5%' })
.borderRadius(10)
.backgroundColor(Color.Gray)
}
}, (item: number) => item.toString());
}.width('100%')
}
.title('PageTwo', { backgroundColor: Color.Yellow, barStyle: BarStyle.STACK })
.toolbarConfiguration([
{
// $r('sys.symbol.phone_badge_star')需要替换为开发者所需的资源文件
value: 'item1',
symbolIcon: new SymbolGlyphModifier($r('sys.symbol.phone_badge_star'))
}
], { backgroundColor: Color.Orange, barStyle: BarStyle.STACK })
// 绑定可滚动容器组件
.bindToScrollable([this.listScroller])
}
}
@Entry
@Component
struct Index {
private stack: NavPathStack = new NavPathStack();
@Builder
MyPageMap(name: string) {
if (name === 'myPageOne') {
MyPageOne();
} else {
MyPageTwo();
}
}
build() {
Navigation(this.stack) {
Column() {
Button('push PageOne').onClick(() => {
this.stack.pushPath({ name: 'myPageOne' });
})
Button('push PageTwo').onClick(() => {
this.stack.pushPath({ name: 'myPageTwo' });
})
}.height('40%').justifyContent(FlexAlign.SpaceAround)
}.width('100%')
.height('100%')
.title({ main: 'MainTitle', sub: 'subTitle' })
.navDestination(this.MyPageMap)
}
} 