1# NavDestination 2 3作为子页面的根容器,用于显示[Navigation](ts-basic-components-navigation.md)的内容区。 4 5> **说明:** 6> 7> - 该组件从API version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 8> 9> - 该组件从API version 11开始默认支持安全区避让特性(默认值为:expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.TOP, SafeAreaEdge.BOTTOM])),开发者可以重写该属性覆盖默认行为,API version 11之前的版本需配合[expandSafeArea](ts-universal-attributes-expand-safe-area.md)属性实现安全区避让。 10> 11> - NavDestination组件必须配合Navigation使用,作为Navigation目的页面的根节点,单独使用只能作为普通容器组件,不具备路由相关属性能力。 12> 13> - 如果页面栈中间页面的生命周期发生变化,跳转之前的栈顶Destination的生命周期(onWillShow, onShown, onHidden, onWillDisappear)与跳转之后的栈顶Destination的生命周期(onWillShow, onShown, onHidden, onWillDisappear)均在最后触发。 14> 15> - NavDestination未设置主副标题并且没有返回键时,不显示标题栏。 16 17## 子组件 18 19> **说明:** 20> 21> - 子组件类型:系统组件和自定义组件,支持渲染控制类型([if/else](../../../ui/state-management/arkts-rendering-control-ifelse.md)、[ForEach](../../../ui/state-management/arkts-rendering-control-foreach.md)和[LazyForEach](../../../ui/state-management/arkts-rendering-control-lazyforeach.md))。 22> - 子组件个数:多个。 23 24 25## 接口 26 27NavDestination() 28 29创建[Navigation](ts-basic-components-navigation.md)子页面的根容器。 30 31**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 32 33**系统能力:** SystemCapability.ArkUI.ArkUI.Full 34 35## 属性 36 37支持[通用属性](ts-component-general-attributes.md)。 38 39不推荐设置位置、大小等布局相关属性,可能会造成页面显示异常。 40 41### title 42 43title(value: string | CustomBuilder | NavDestinationCommonTitle | NavDestinationCustomTitle | Resource, options?: NavigationTitleOptions) 44 45设置页面标题。使用NavigationCustomTitle类型设置height高度时,[titleMode](ts-basic-components-navigation.md#titlemode)属性不会生效。字符串超长时,如果不设置副标题,先缩小再换行2行后以...截断。如果设置副标题,先缩小后以...截断。 46 47**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 48 49**系统能力:** SystemCapability.ArkUI.ArkUI.Full 50 51**参数:** 52 53| 参数名 | 类型 | 必填 | 说明 | 54| ------ | ------------------------------------------------------------ | ---- | ---------- | 55| value | string \| [CustomBuilder](ts-types.md#custombuilder8) \| [NavDestinationCommonTitle](#navdestinationcommontitle) \| [NavDestinationCustomTitle](#navdestinationcustomtitle) \| [Resource<sup>14+</sup>](ts-types.md#resource) | 是 | 页面标题。 | 56| options<sup>12+</sup> | [NavigationTitleOptions](ts-basic-components-navigation.md#navigationtitleoptions11) | 否 | 标题栏选项。 | 57 58### hideTitleBar 59 60hideTitleBar(value: boolean) 61 62设置是否隐藏标题栏。 63 64**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 65 66**系统能力:** SystemCapability.ArkUI.ArkUI.Full 67 68**参数:** 69 70| 参数名 | 类型 | 必填 | 说明 | 71| ------ | ------- | ---- | ------------------------------------------------------------ | 72| value | boolean | 是 | 是否隐藏标题栏。<br/>默认值:false<br/>true: 隐藏标题栏。<br/>false: 显示标题栏。 | 73 74### hideTitleBar<sup>13+</sup> 75 76hideTitleBar(hide: boolean, animated: boolean) 77 78设置是否隐藏标题栏。与[hideTitleBar](#hidetitlebar)相比,新增标题栏显隐时是否使用动画。 79 80**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 81 82**系统能力:** SystemCapability.ArkUI.ArkUI.Full 83 84**参数:** 85 86| 参数名 | 类型 | 必填 | 说明 | 87| ------ | ------- | ---- | ------------------------------------------------------------ | 88| hide | boolean | 是 | 是否隐藏标题栏。<br/>默认值:false<br/>true:隐藏标题栏。<br/>false:显示标题栏。 | 89| animated | boolean | 是 | 设置是否使用动画显隐标题栏。<br/>默认值:false<br/>true:使用动画显示隐藏标题栏。<br/>false:不使用动画显示隐藏标题栏。 | 90 91### toolbarConfiguration<sup>13+</sup> 92 93toolbarConfiguration(toolbarParam: Array<ToolbarItem> | CustomBuilder, options?: NavigationToolbarOptions) 94 95设置工具栏内容。未调用本接口时不显示工具栏。 96 97**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 98 99**系统能力:** SystemCapability.ArkUI.ArkUI.Full 100 101**参数:** 102 103| 参数名 | 类型 | 必填 | 说明 | 104| ------------ | ------------------------------------------------------------ | ---- | ------------------------------------------------------------ | 105| toolbarParam | Array<[ToolbarItem](ts-basic-components-navigation.md#toolbaritem10)> \| [CustomBuilder](ts-types.md#custombuilder8) | 是 | 工具栏内容。<br/>使用Array<[ToolbarItem](ts-basic-components-navigation.md#toolbaritem10)>写法设置的工具栏有如下特性:<br/>-工具栏所有选项均分底部工具栏,在每个均分内容区布局文本和图标。<br/>-文本超长时,若工具栏选项个数小于5个,优先拓展选项的宽度,工具栏最大宽度与屏幕等宽,其次逐级缩小,缩小之后换行,最后截断。<br/>-竖屏最多支持显示5个图标,多余的图标会被放入自动生成的更多图标中,点击更多图标,可以展示剩余内容。横屏时,如果为[Split](ts-basic-components-navigation.md#navigationmode9枚举说明)模式,仍按照竖屏规则显示,如果为[Stack](ts-basic-components-navigation.md#navigationmode9枚举说明)模式需配合menus属性的Array<[NavigationMenuItem](ts-basic-components-navigation.md#navigationmenuitem)>使用,底部工具栏会自动隐藏,同时底部工具栏所有选项移动至页面右上角菜单。<br/>使用[CustomBuilder](ts-types.md#custombuilder8)写法为用户自定义工具栏选项,除均分底部工具栏外不具备以上功能。 | 106| options | [NavigationToolbarOptions](ts-basic-components-navigation.md#navigationtoolbaroptions11) | 否 | 工具栏选项。包含工具栏背景颜色、工具栏背景模糊样式、工具栏布局方式。 | 107 108> **说明:** 109> 110> 不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。 111 112### hideToolBar<sup>13+</sup> 113 114hideToolBar(hide: boolean, animated?: boolean) 115 116设置是否隐藏工具栏。与[hideToolBar](ts-basic-components-navigation.md#hidetoolbar)相比,新增工具栏显隐时是否使用动画。 117 118**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。 119 120**系统能力:** SystemCapability.ArkUI.ArkUI.Full 121 122**参数:** 123 124| 参数名 | 类型 | 必填 | 说明 | 125| ------ | ------- | ---- | ------------------------------------------------------------ | 126| hide | boolean | 是 | 是否隐藏工具栏。<br/>默认值:false<br/>true:隐藏工具栏。<br/>false:显示工具栏。 | 127| animated | boolean | 否 | 设置是否使用动画显隐工具栏。<br/>默认值:false<br/>true:使用动画显示隐藏工具栏。<br/>false:不使用动画显示隐藏工具栏。 | 128 129### mode <sup>11+</sup> 130 131mode(value: NavDestinationMode) 132 133设置NavDestination类型,不支持动态修改。 134 135**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 136 137**系统能力:** SystemCapability.ArkUI.ArkUI.Full 138 139**参数:** 140 141| 参数名 | 类型 | 必填 | 说明 | 142| ------ | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | 143| value | [NavDestinationMode](#navdestinationmode枚举说明11) | 是 | NavDestination类型。<br/>默认值:NavDestinationMode.STANDARD | 144 145### backButtonIcon<sup>11+</sup> 146 147backButtonIcon(value: ResourceStr | PixelMap | SymbolGlyphModifier) 148 149> **说明:** 150> 151> 不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。 152 153 154设置标题栏返回键图标。 155 156**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 157 158**系统能力:** SystemCapability.ArkUI.ArkUI.Full 159 160**参数:** 161 162| 参数名 | 类型 | 必填 | 说明 | 163| ------ | ------------------------------------------------------------ | ---- | ------------------ | 164| value | [ResourceStr](ts-types.md#resourcestr) \| [PixelMap](../../apis-image-kit/js-apis-image.md#pixelmap7) \| [SymbolGlyphModifier<sup>12+</sup>](ts-universal-attributes-attribute-modifier.md) | 是 | 标题栏返回键图标。 | 165 166### menus<sup>12+</sup> 167 168menus(value: Array<NavigationMenuItem> | CustomBuilder) 169 170> **说明:** 171> 172> 不支持通过SymbolGlyphModifier对象的fontSize属性修改图标大小、effectStrategy属性修改动效、symbolEffect属性修改动效类型。 173 174 175设置页面右上角菜单。不设置时不显示菜单项。使用Array<[NavigationMenuItem](ts-basic-components-navigation.md#navigationmenuitem)> 写法时,竖屏最多支持显示3个图标,横屏最多支持显示5个图标,多余的图标会被放入自动生成的更多图标。 176 177**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 178 179**系统能力:** SystemCapability.ArkUI.ArkUI.Full 180 181**参数:** 182 183| 参数名 | 类型 | 必填 | 说明 | 184| ------ | ------------------------------------------------------------ | ---- | ------------------ | 185| value | Array<[NavigationMenuItem](ts-basic-components-navigation.md#navigationmenuitem)> \| [CustomBuilder](ts-types.md#custombuilder8) | 是 | 页面右上角菜单。 | 186 187### ignoreLayoutSafeArea<sup>12+</sup> 188 189ignoreLayoutSafeArea(types?: Array<LayoutSafeAreaType>, edges?: Array<LayoutSafeAreaEdge>) 190 191控制组件的布局,使其扩展到非安全区域 192 193**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 194 195**系统能力:** SystemCapability.ArkUI.ArkUI.Full 196 197**参数:** 198 199| 参数名 | 类型 | 必填 | 说明 | 200| ------ | -------------------------------------------------- | ---- | ------------------------------------------------------------ | 201| types | Array <[LayoutSafeAreaType](ts-types.md#layoutsafeareatype12)> | 否 | 配置扩展安全区域的类型。<br />默认值:<br />[LayoutSafeAreaType.SYSTEM] | 202| edges | Array <[LayoutSafeAreaEdge](ts-types.md#layoutsafeareaedge12)> | 否 | 配置扩展安全区域的方向。<br /> 默认值:<br />[LayoutSafeAreaEdge.TOP, LayoutSafeAreaEdge.BOTTOM]。| 203 204> **说明:** 205> 206> 组件设置ignoreLayoutSafeArea之后生效的条件为: 207> 设置LayoutSafeAreaType.SYSTEM时,组件的边界与非安全区域重合时组件能够延伸到非安全区域下。例如:设备顶部状态栏高度100,组件在屏幕中纵向方位的绝对偏移需要在0到100之间。 208> 209> 若组件延伸到非安全区域内,此时在非安全区域里触发的事件(例如:点击事件)等可能会被系统拦截,优先响应状态栏等系统组件。 210 211### systemBarStyle<sup>12+</sup> 212 213systemBarStyle(style: Optional<SystemBarStyle>) 214 215当Navigation中显示当前NavDestination时,设置对应系统状态栏的样式。 216 217**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 218 219**系统能力:** SystemCapability.ArkUI.ArkUI.Full 220 221**参数:** 222 223| 参数名 | 类型 | 必填 | 说明 | 224| ------ | -------------- | ---- | ------------------ | 225| style | [Optional](ts-universal-attributes-custom-property.md#optional12)<[SystemBarStyle](../js-apis-window.md#systembarstyle12)> | 是 | 系统状态栏样式。 | 226 227> **说明:** 228> 229> 1. 必须配合Navigation使用,作为其Navigation目的页面的根节点时才能生效。 230> 2. 其他使用限制请参考Navigation对应的[systemBarStyle](ts-basic-components-navigation.md#systembarstyle12)属性说明。 231 232### systemTransition<sup>14+</sup> 233systemTransition(type: NavigationSystemTransitionType) 234 235设置NavDestination系统转场动画,支持分别设置系统标题栏动画和内容动画。 236 237**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 238 239**系统能力:** SystemCapability.ArkUI.ArkUI.Full 240 241**参数:** 242 243| 参数名 | 类型 | 必填 | 说明 | 244| ------ | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | 245| type | [NavigationSystemTransitionType](#navigationsystemtransitiontype14枚举说明) | 是 | 系统转场动画类型。<br/>默认值: NavigationSystemTransitionType.DEFAULT | 246 247### recoverable<sup>14+</sup> 248 249recoverable(recoverable: Optional<boolean>) 250 251配置NavDestination是否可恢复。如配置为可恢复,当应用进程异常退出并重新冷启动时,可自动创建该NavDestination。该功能需NavDestination对应的Navigation也配置了[可恢复属性](ts-basic-components-navigation.md#recoverable14)。 252 253**系统能力:** SystemCapability.ArkUI.ArkUI.Full 254 255**参数:** 256 257| 参数名 | 类型 | 必填 | 说明 | 258| ------ | -------------- | ---- | ------------------ | 259| recoverable | [Optional](ts-universal-attributes-custom-property.md#optional12)<boolean> | 是 | NavDestination是否可恢复,默认为不可恢复。<br/>默认值:false<br/>true:页面栈可恢复。<br/>false:页面栈不可恢复。 | 260 261> **使用说明:** 262> 263> 该接口需要配合Navigation的[recoverable](./ts-basic-components-navigation.md#recoverable14)接口使用。 264 265### bindToScrollable<sup>14+</sup> 266bindToScrollable(scrollers: Array<Scroller>) 267 268绑定NavDestination组件和可滚动容器组件(支持[List](./ts-container-list.md)、[Scroll](./ts-container-scroll.md)、[Grid](./ts-container-grid.md)、[WaterFlow](./ts-container-waterflow.md)),当滑动可滚动容器组件时,会触发所有与其绑定的NavDestination组件的标题栏和工具栏的显示和隐藏动效,上滑隐藏,下滑显示。一个NavDestination可与多个可滚动容器组件绑定,一个可滚动容器组件也可与多个NavDestination绑定。使用示例参见[示例1](#示例1标题栏工具栏与可滚动类组件联动)。 269 270> **说明:** 271> 272> - 只有NavDestination的标题栏或工具栏设置为可见时,联动效果才会生效。 273> - 当多个可滚动容器组件绑定了同一个NavDestination组件时,滚动任何一个容器都会触发标题栏和工具栏的显示或隐藏效果。且当任何一个可滚动容器组件滑动到底部或顶部位置时,会立即触发标题栏和工具栏的显示动效。因此,为了获得最佳用户体验,不建议同时触发多个可滚动容器组件的滚动事件。 274 275**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 276 277**系统能力:** SystemCapability.ArkUI.ArkUI.Full 278 279**参数:** 280 281| 参数名 | 类型 | 必填 | 说明 | 282| ------ | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | 283| scrollers | Array<[Scroller](./ts-container-scroll.md#scroller)> | 是 | 可滚动容器组件的控制器。 | 284 285### bindToNestedScrollable<sup>14+</sup> 286bindToNestedScrollable(scrollInfos: Array<NestedScrollInfo>) 287 288绑定NavDestination组件和嵌套的可滚动容器组件(支持[List](./ts-container-list.md)、[Scroll](./ts-container-scroll.md)、[Grid](./ts-container-grid.md)、[WaterFlow](./ts-container-waterflow.md)),当滑动父组件或子组件时,会触发所有与其绑定的NavDestination组件的标题栏和工具栏的显示和隐藏动效,上滑隐藏,下滑显示。一个NavDestination可与多个嵌套的可滚动容器组件绑定,嵌套的可滚动容器组件也可与多个NavDestination绑定。使用示例参见[示例1](#示例1标题栏工具栏与可滚动类组件联动)。 289 290> **说明:** 291> 292> - 只有NavDestination的标题栏或工具栏设置为可见时,联动效果才会生效。 293> - 当多个可滚动容器组件绑定了同一个NavDestination组件时,滚动任何一个容器都会触发标题栏和工具栏的显示或隐藏效果。且当任何一个可滚动容器组件滑动到底部或顶部位置时,会立即触发标题栏和工具栏的显示动效。因此,为了获得最佳用户体验,不建议同时触发多个可滚动容器组件的滚动事件。 294 295**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 296 297**系统能力:** SystemCapability.ArkUI.ArkUI.Full 298 299**参数:** 300 301| 参数名 | 类型 | 必填 | 说明 | 302| ------ | ---------------------------------------------------- | ---- | ------------------------------------------------------------ | 303| scrollInfos | Array<[NestedScrollInfo](#nestedscrollinfo14)> | 是 | 嵌套的可滚动容器组件的控制器。 | 304 305### hideBackButton<sup>15+</sup> 306 307hideBackButton(hide: Optional<boolean>) 308 309设置是否隐藏标题栏中的返回键。 310 311**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 312 313**系统能力:** SystemCapability.ArkUI.ArkUI.Full 314 315**参数:** 316 317| 参数名 | 类型 | 必填 | 说明 | 318| ------ | ------- | ---- | ------------------------------------------------------------ | 319| hide | [Optional](ts-universal-attributes-custom-property.md#optional12)<boolean> | 是 | 是否隐藏标题栏中的返回键。 <br/>默认值:false<br/>true:隐藏返回键。<br/>false:显示返回键。 | 320 321### customTransition<sup>15+</sup> 322 323customTransition(delegate: NavDestinationTransitionDelegate) 324 325设置NavDestination自定义转场动画。 326 327> **说明:** 328> 329> 该属性与[systemTransition](#systemtransition14)同时设置时,后设置的属性生效。 330 331**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 332 333**系统能力:** SystemCapability.ArkUI.ArkUI.Full 334 335**参数:** 336 337| 参数名 | 类型 | 必填 | 说明 | 338| ------ | ------- | ---- | ------------------------------------------------------------ | 339| delegate | [NavDestinationTransitionDelegate](#navdestinationtransitiondelegate15) | 是 | NavDestination自定义动画的代理函数。 | 340 341## NavDestinationMode枚举说明<sup>11+</sup> 342 343NavDestination类型。 344 345**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 346 347**系统能力:** SystemCapability.ArkUI.ArkUI.Full 348 349| 名称 | 值 | 说明 | 350| ---- | --- | ---------------------------------------- | 351| STANDARD | 0 | 标准模式的NavDestination。 | 352| DIALOG | 1 | 默认透明,进出页面栈不影响下层NavDestination的生命周期。<br />API version 13之前,默认无系统转场动画。从API version 13开始,支持系统转场动画。 | 353 354## NavigationSystemTransitionType<sup>14+</sup>枚举说明 355 356系统转场动画类型。 357 358**系统能力:** SystemCapability.ArkUI.ArkUI.Full 359 360| 名称 | 值 | 说明 | 361| ---- | --- | ----- | 362| DEFAULT | 0 | 默认系统转场动画。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 363| NONE| 1 | 无系统转场动画。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 364| TITLE | 2 | 标题栏系统转场动画。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 365| CONTENT | 3 | 内容区系统转场动画。<br/>**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。| 366| FADE<sup>15+</sup> | 4 | 渐变类型的系统转场动画。<br/>**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 | 367| EXPLODE<sup>15+</sup> | 5 | 中心缩放类型的系统转场动画。<br/>**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 | 368| SLIDE_RIGHT<sup>15+</sup> | 6 | 右侧平移类型的系统转场动画。<br/>**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 | 369| SLIDE_BOTTOM<sup>15+</sup> | 7 | 底部平移类型的系统转场动画。<br/>**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 | 370 371**说明:** 372> 373> 设置系统转场动画,支持分别设置系统标题栏动画和内容动画。 374> 375> 系统默认转场动画中只有STANDARD页面的push和pop动画有单独的标题栏动画,存在如下限制: 376> 1. 设置NavigationSystemTransitionType为TITLE时,系统转场只有标题栏动画。 377> 2. 设置NavigationSystemTransitionType为CONTENT时,系统转场只有内容区动画。 378> 379> 设置NONE或者TITLE时没有系统转场动画,设置CONTENT和DEFAULT时默认系统转场动画。 380 381## 事件 382 383除支持[通用事件](ts-component-general-events.md)外,还支持如下事件: 384 385### onShown<sup>10+</sup> 386 387onShown(callback: () => void) 388 389当该NavDestination页面显示时触发此回调。 390 391**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 392 393**系统能力:** SystemCapability.ArkUI.ArkUI.Full 394 395### onHidden<sup>10+</sup> 396 397onHidden(callback: () => void) 398 399当该NavDestination页面隐藏时触发此回调。 400 401**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 402 403**系统能力:** SystemCapability.ArkUI.ArkUI.Full 404 405### onWillAppear<sup>12+</sup> 406 407onWillAppear(callback: Callback\<void>) 408 409当该Destination挂载之前触发此回调。在该回调中允许修改页面栈,当前帧生效。 410 411**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 412 413**系统能力:** SystemCapability.ArkUI.ArkUI.Full 414 415### onWillShow<sup>12+</sup> 416 417onWillShow(callback: Callback\<void>) 418 419当该Destination显示之前触发此回调。 420 421**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 422 423**系统能力:** SystemCapability.ArkUI.ArkUI.Full 424 425### onWillHide<sup>12+</sup> 426 427onWillHide(callback: Callback\<void>) 428 429当该Destination隐藏之前触发此回调。 430 431**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 432 433**系统能力:** SystemCapability.ArkUI.ArkUI.Full 434 435### onWillDisappear<sup>12+</sup> 436 437onWillDisappear(callback: Callback\<void>) 438 439当该Destination卸载之前触发的生命周期(有转场动画时,在转场动画开始之前触发)。 440 441**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 442 443**系统能力:** SystemCapability.ArkUI.ArkUI.Full 444 445### onBackPressed<sup>10+</sup> 446 447onBackPressed(callback: () => boolean) 448 449当与Navigation绑定的页面栈中存在内容时,此回调生效。当点击返回键时,触发该回调。 450 451返回值为true时,表示重写返回键逻辑,返回值为false时,表示回退到上一个页面。 452 453**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 454 455**系统能力:** SystemCapability.ArkUI.ArkUI.Full 456 457### onReady<sup>11+</sup> 458 459onReady(callback: [Callback](../../apis-basic-services-kit/js-apis-base.md#callback)<[NavDestinationContext](#navdestinationcontext11)>) 460 461当NavDestination即将构建子组件之前会触发此回调。 462 463**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 464 465**系统能力:** SystemCapability.ArkUI.ArkUI.Full 466 467### onResult<sup>15+</sup> 468 469onResult(callback: Optional\<Callback\<ESObject\>\>) 470 471NavDestination返回时触发该回调。 472 473**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 474 475**系统能力:** SystemCapability.ArkUI.ArkUI.Full 476 477**参数:** 478| 参数名 | 类型 | 必填 | 说明 | 479| ------ | ------ | ---- | ---------------- | 480|callback | [Optional](./ts-universal-attributes-custom-property.md)\<[Callback](../../apis-basic-services-kit/js-apis-base.md#callback)\<ESObject\>\>| 是 | 页面返回回调,入参为[pop](ts-basic-components-navigation.md#pop11)、[popToName](ts-basic-components-navigation.md#poptoname11)、[popToIndex](ts-basic-components-navigation.md#poptoindex11)接口传入的result参数。如果不传该参数,入参为undefined。| 481 482### onActive<sup>17+</sup> 483 484onActive(callback: Optional\<Callback\<NavDestinationActiveReason\>\>) 485 486NavDestination处于激活态(处于栈顶可操作,且上层无特殊组件遮挡)时,触发该回调。 487 488**原子化服务API:** 从API version 17开始,该接口支持在原子化服务中使用。 489 490**系统能力:** SystemCapability.ArkUI.ArkUI.Full 491 492**参数:** 493| 参数名 | 类型 | 必填 | 说明 | 494| ------ | ------ | ---- | ---------------- | 495|callback | [Optional](./ts-universal-attributes-custom-property.md#optional12)\<[Callback](../../apis-basic-services-kit/js-apis-base.md#callback)\<[NavDestinationActiveReason](#navdestinationactivereason17)\>\>| 是 | NavDestination由非激活态变为激活态的原因。| 496 497### onInactive<sup>17+</sup> 498 499onInactive(callback: Optional\<Callback\<NavDestinationActiveReason\>\>) 500 501NavDestination处于非激活态(处于非栈顶不可操作,或处于栈顶时上层有特殊组件遮挡)时,触发该回调。 502 503**原子化服务API:** 从API version 17开始,该接口支持在原子化服务中使用。 504 505**系统能力:** SystemCapability.ArkUI.ArkUI.Full 506 507**参数:** 508| 参数名 | 类型 | 必填 | 说明 | 509| ------ | ------ | ---- | ---------------- | 510|callback | [Optional](./ts-universal-attributes-custom-property.md#optional12)\<[Callback](../../apis-basic-services-kit/js-apis-base.md#callback)\<[NavDestinationActiveReason](#navdestinationactivereason17)\>\>| 是 | NavDestination由激活态变为非激活态的原因。| 511 512## NavDestinationCommonTitle 513 514NavDestination通用标题。 515 516**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 517 518**系统能力:** SystemCapability.ArkUI.ArkUI.Full 519 520| 名称 | 类型 | 必填 | 说明 | 521| ---- | ------ | ---- | ------ | 522| main | string \| [Resource<sup>14+<sup>](ts-types.md#resource) | 是 | 设置主标题。 | 523| sub | string \| [Resource<sup>14+<sup>](ts-types.md#resource) | 是 | 设置副标题。 | 524 525## NavDestinationCustomTitle 526 527NavDestination自定义标题。 528 529**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 530 531**系统能力:** SystemCapability.ArkUI.ArkUI.Full 532 533| 名称 | 类型 | 必填 | 说明 | 534| ------- | ---------------------------------------- | ---- | -------- | 535| builder | [CustomBuilder](ts-types.md#custombuilder8) | 是 | 设置标题栏内容。 | 536| height | [TitleHeight](ts-appendix-enums.md#titleheight9) \| [Length](ts-types.md#length) | 是 | 设置标题栏高度。<br/>取值范围:[0, +∞)。 | 537 538## NavDestinationContext<sup>11+</sup> 539 540NavDestination上下文信息。 541 542**系统能力:** SystemCapability.ArkUI.ArkUI.Full 543 544| 名称 | 类型 | 必填 | 说明 | 545| ---- | ------ | ----- | ------ | 546| pathInfo | [NavPathInfo](ts-basic-components-navigation.md#navpathinfo10) | 是 | 跳转NavDestination时指定的参数。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 547| pathStack | [NavPathStack](ts-basic-components-navigation.md#navpathstack10) | 是 | 当前NavDestination所处的页面栈。 <br/>**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 | 548| navDestinationId<sup>12+</sup> | string | 否 | 当前NavDestination的唯一ID,由系统自动生成,和组件通用属性id无关。 <br/>**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。| 549 550### getConfigInRouteMap<sup>12+</sup> 551 552getConfigInRouteMap(): RouteMapConfig |undefined 553 554获取当前NavDestination的路由配置信息。 555 556**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 557 558**系统能力:** SystemCapability.ArkUI.ArkUI.Full 559 560**返回值** 561 562| 类型 | 说明 | 563| --- | --- | 564| [RouteMapConfig](#routemapconfig12) | 当前页面路由配置信息。 | 565| undefined | 当该页面不是通过路由表配置时返回undefined。 | 566 567## RouteMapConfig<sup>12+</sup> 568 569路由配置信息。 570 571**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 572 573**系统能力:** SystemCapability.ArkUI.ArkUI.Full 574 575| 名称 | 类型 |必填 | 说明 | 576| ---- | --- | ---- |----- | 577| name | string | 是 | 页面名称。| 578| pageSourceFile| string | 是 | 页面在当前包中的路径。| 579| data | Object | 是 | 页面自定义字段信息。| 580 581## NestedScrollInfo<sup>14+</sup> 582 583嵌套可滚动容器组件信息 584 585**原子化服务API:** 从API version 14开始,该接口支持在原子化服务中使用。 586 587**系统能力:** SystemCapability.ArkUI.ArkUI.Full 588 589| 名称 | 类型 |必填 | 说明 | 590| ---- | --- | ---- |----- | 591| parent | [Scroller](./ts-container-scroll.md#scroller) | 是 | 可滚动容器组件的控制器。 | 592| child | [Scroller](./ts-container-scroll.md#scroller) | 是 | 可滚动容器组件的控制器,child对应的组件需要是parent对应组件的子组件,且组件间存在嵌套滚动关系。| 593 594### NavDestinationActiveReason<sup>17+</sup> 595 596NavDestination激活态或者非激活态变化的原因。 597 598**原子化服务API:** 从API version 17开始,该接口支持在原子化服务中使用。 599 600**系统能力:** SystemCapability.ArkUI.ArkUI.Full 601 602| 名称 | 值 | 说明 | 603| ---- | -- | ---------------------------------------- | 604| TRANSITION | 0 | 通过页面跳转的方式使NavDestination激活态发生变化。 | 605| CONTENT_COVER | 1 | 通过全模态的开启和关闭使NavDestination激活态发生变化。 | 606| SHEET | 2 | 通过半模态的开启或关闭使NavDestination激活态发生变化。 | 607| DIALOG | 3 | 通过自定义Dialog开启或关闭使NavDestination激活态发生变化。 | 608| OVERLAY | 4 | 通过OverlayManager开启或者关闭Overlay使NavDestination激活态发生变化。| 609| APP_STATE | 5 | 通过前后台切换使NavDestination激活态发生变化。 | 610 611## NavDestinationTransition<sup>15+</sup> 612 613NavDestination自定义动画接口。 614 615**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 616 617**系统能力:** SystemCapability.ArkUI.ArkUI.Full 618 619| 名称 | 类型 |必填 | 说明 | 620| ---- | --- | ---- |----- | 621| onTransitionEnd | Callback\<void> | 否 | 转场动画结束时的回调函数。 | 622| duration | number | 否 | 转场动画的持续时间,默认值为1000(毫秒)。 | 623| curve | [Curve](ts-appendix-enums.md#curve) | 否 | 动画的曲线类型,默认值为[Curve.EaseInOut](ts-appendix-enums.md#curve)。 | 624| delay | number | 否 | 转场动画的延迟。默认值为0(毫秒)。 | 625| event | Callback\<void> | 是 | 指定转场动效的闭包函数,系统会根据闭包中对组件UI状态的修改,生成对应的过渡动画。参见[animateTo](../js-apis-arkui-UIContext.md#animateto)中的event。 | 626 627## NavDestinationTransitionDelegate<sup>15+</sup> 628 629type NavDestinationTransitionDelegate = (operation: NavigationOperation, isEnter: boolean) => Array\<NavDestinationTransition> | undefined 630 631NavDestination自定义转场动画的代理函数。 632 633**原子化服务API:** 从API version 15开始,该接口支持在原子化服务中使用。 634 635**系统能力:** SystemCapability.ArkUI.ArkUI.Full 636 637**参数:** 638 639| 参数名 | 类型 | 必填 | 说明 | 640|------|--------|----|-----------------------| 641| operation | [NavigationOperation](ts-basic-components-navigation.md#navigationoperation11枚举说明) | 是 | 当前页面转场的操作类型。 | 642| isEnter | boolean | 是 | 当前页面是否为入场页面。<br/>true: 当前页面是入场页面。<br/>false: 当前页面不是入场页面。 | 643 644**返回值:** 645 646| 类型 | 说明 | 647|---------|-----------| 648| Array<[NavDestinationTransition](#navdestinationtransition15)> \| undefined | NavDestination页面的自定义动画集合。如果返回undefined则做系统默认动画。 | 649 650## 示例 651 652### 示例1(标题栏工具栏与可滚动类组件联动) 653 654以下示例主要演示NavDestination绑定可滚动容器组件来实现滚动内容时触发标题栏和工具栏显示隐藏的效果。 655 656```ts 657import { SymbolGlyphModifier } from '@kit.ArkUI'; 658 659@Component 660struct MyPageOne { 661 private listScroller: Scroller = new Scroller(); 662 private scrollScroller: Scroller = new Scroller(); 663 private arr: number[] = []; 664 665 aboutToAppear(): void { 666 for (let i = 0; i < 30; i++) { 667 this.arr.push(i); 668 } 669 } 670 671 build() { 672 NavDestination() { 673 Scroll(this.scrollScroller) { 674 Column() { 675 List({ space: 0, initialIndex: 0, scroller: this.listScroller }) { 676 ForEach(this.arr, (item: number, index: number) => { 677 ListItem() { 678 Text('' + item) 679 .height(100) 680 .fontSize(16) 681 .textAlign(TextAlign.Center) 682 .width('90%') 683 .margin({ left: '5%' }) 684 .borderRadius(10) 685 .backgroundColor(Color.Gray) 686 } 687 }, (item: string) => item); 688 }.width('100%').height('80%').scrollBar(BarState.Off) 689 .nestedScroll({ scrollForward: NestedScrollMode.SELF_FIRST, scrollBackward: NestedScrollMode.SELF_FIRST }) 690 691 ForEach(this.arr, (item: number, index: number) => { 692 ListItem() { 693 Text('' + item) 694 .height(100) 695 .fontSize(16) 696 .textAlign(TextAlign.Center) 697 .width('90%') 698 .margin({ top: '5%' }) 699 .borderRadius(10) 700 .backgroundColor(Color.Pink) 701 } 702 }, (item: string) => item); 703 } 704 } 705 .width('100%') 706 .scrollBar(BarState.Off) 707 .scrollable(ScrollDirection.Vertical) 708 .edgeEffect(EdgeEffect.Spring) 709 } 710 .title('PageOne', { backgroundColor: Color.Yellow, barStyle: BarStyle.STACK }) 711 .toolbarConfiguration([ 712 { 713 value: 'item1', 714 symbolIcon: new SymbolGlyphModifier($r('sys.symbol.phone_badge_star')) 715 } 716 ], { backgroundColor: Color.Orange, barStyle: BarStyle.STACK }) 717 // 绑定有父子关系的可滚动容器组件 718 .bindToNestedScrollable([{ parent: this.scrollScroller, child: this.listScroller }]) 719 } 720} 721 722@Component 723struct MyPageTwo { 724 private listScroller: Scroller = new Scroller(); 725 private arr: number[] = []; 726 727 aboutToAppear(): void { 728 for (let i = 0; i < 30; i++) { 729 this.arr.push(i); 730 } 731 } 732 733 build() { 734 NavDestination() { 735 List({ scroller: this.listScroller }) { 736 ForEach(this.arr, (item: number, index: number) => { 737 ListItem() { 738 Text('' + item) 739 .height(100) 740 .fontSize(16) 741 .textAlign(TextAlign.Center) 742 .width('90%') 743 .margin({ left: '5%' }) 744 .borderRadius(10) 745 .backgroundColor(Color.Gray) 746 } 747 }, (item: string) => item); 748 }.width('100%') 749 } 750 .title('PageTwo', { backgroundColor: Color.Yellow, barStyle: BarStyle.STACK }) 751 .toolbarConfiguration([ 752 { 753 value: 'item1', 754 symbolIcon: new SymbolGlyphModifier($r('sys.symbol.phone_badge_star')) 755 } 756 ], { backgroundColor: Color.Orange, barStyle: BarStyle.STACK }) 757 // 绑定可滚动容器组件 758 .bindToScrollable([this.listScroller]) 759 } 760} 761 762@Entry 763@Component 764struct Index { 765 private stack: NavPathStack = new NavPathStack(); 766 767 @Builder 768 MyPageMap(name: string) { 769 if (name === 'myPageOne') { 770 MyPageOne() 771 } else { 772 MyPageTwo() 773 } 774 } 775 776 build() { 777 Navigation(this.stack) { 778 Column() { 779 Button('push PageOne').onClick(() => { 780 this.stack.pushPath({ name: 'myPageOne' }) 781 }) 782 Button('push PageTwo').onClick(() => { 783 this.stack.pushPath({ name: 'myPageTwo' }) 784 }) 785 }.height('40%').justifyContent(FlexAlign.SpaceAround) 786 }.width('100%') 787 .height('100%') 788 .title({ main: 'MainTitle', sub: 'subTitle' }) 789 .navDestination(this.MyPageMap) 790 } 791} 792``` 793 794 795### 示例2(设置NavDestination自定义转场) 796 797以下示例主要演示NavDestination设置自定义转场动画属性[customTransition](#customtransition15)的效果。 798 799```ts 800@Entry 801@Component 802struct NavDestinationCustomTransition { 803 stack: NavPathStack = new NavPathStack() 804 805 @Builder 806 pageMap(name: string) { 807 if (name) { 808 NavDest() 809 } 810 } 811 812 aboutToAppear(): void { 813 this.stack.pushPath({name: 'dest0'}) 814 } 815 816 build() { 817 Navigation(this.stack) { 818 // empty 819 } 820 .navDestination(this.pageMap) 821 .hideNavBar(true) 822 .title('Main Page') 823 .titleMode(NavigationTitleMode.Mini) 824 } 825} 826 827declare type voidFunc = () => void; 828 829@Component 830struct NavDest { 831 @State name: string = 'NA' 832 @State destWidth: string = '100%' 833 stack: NavPathStack = new NavPathStack() 834 @State y: string = '0'; 835 836 build() { 837 NavDestination() { 838 Column() { 839 Button('push next page', { stateEffect: true, type: ButtonType.Capsule }) 840 .width('80%') 841 .height(40) 842 .margin(20) 843 .onClick(() => { 844 this.stack.pushPath({ name: this.name == 'PageOne' ? "PageTwo" : "PageOne" }) 845 }) 846 } 847 .size({ width: '100%', height: '100%' }) 848 } 849 .title(this.name) 850 .translate({ y: this.y }) 851 .onReady((context) => { 852 this.name = context.pathInfo.name; 853 this.stack = context.pathStack; 854 }) 855 .backgroundColor(this.name == 'PageOne' ? '#F1F3F5' : '#ff11dee5') 856 .customTransition( 857 (op: NavigationOperation, isEnter: boolean) 858 : Array<NavDestinationTransition> | undefined => { 859 console.log('[NavDestinationTransition]', 'reached delegate in frontend, op: ' + op + ', isEnter: ' + isEnter); 860 861 let transitionOneEvent: voidFunc = () => { console.log('[NavDestinationTransition]', 'reached transitionOne, empty now!'); } 862 let transitionOneFinishEvent: voidFunc = () => { console.log('[NavDestinationTransition]', 'reached transitionOneFinish, empty now!'); } 863 let transitionOneDuration: number = 500; 864 if (op === NavigationOperation.PUSH) { 865 if (isEnter) { 866 // ENTER_PUSH 867 this.y = '100%'; 868 transitionOneEvent = () => { 869 console.log('[NavDestinationTransition]', 'transitionOne, push & isEnter'); 870 this.y = '0'; 871 } 872 } else { 873 // EXIT_PUSH 874 this.y = '0'; 875 transitionOneEvent = () => { 876 console.log('[NavDestinationTransition]', 'transitionOne, push & !isEnter'); 877 this.y = '0'; 878 } 879 transitionOneDuration = 450 880 } 881 } else if (op === NavigationOperation.POP) { 882 if (isEnter) { 883 // ENTER_POP 884 this.y = '0'; 885 transitionOneEvent = () => { 886 console.log('[NavDestinationTransition]', 'transitionOne, pop & isEnter'); 887 this.y = '0'; 888 } 889 } else { 890 // EXIT_POP 891 this.y = '0'; 892 transitionOneEvent = () => { 893 console.log('[NavDestinationTransition]', 'transitionOne, pop & !isEnter'); 894 this.y = '100%'; 895 } 896 } 897 } else { 898 console.log('[NavDestinationTransition]', '----- NOT-IMPL BRANCH of NAV-DESTINATION CUSTOM TRANSITION -----'); 899 } 900 901 let transitionOne: NavDestinationTransition = { 902 duration: transitionOneDuration, 903 delay: 0, 904 curve: Curve.Friction, 905 event: transitionOneEvent, 906 onTransitionEnd: transitionOneFinishEvent 907 }; 908 909 let transitionTwoEvent: voidFunc = () => { console.log('[NavDestinationTransition]', 'reached transitionTwo, empty now!'); } 910 let transitionTwo: NavDestinationTransition = { 911 duration: 1000, 912 delay: 0, 913 curve: Curve.EaseInOut, 914 event: transitionTwoEvent, 915 onTransitionEnd: () => { console.log('[NavDestinationTransition]', 'reached Two\'s finish'); } 916 }; 917 918 return [ 919 transitionOne, 920 transitionTwo, 921 ]; 922 }) 923 } 924} 925``` 926 927 928### 示例3(设置指定的NavDestination系统转场) 929 930以下示例主要演示NavDestination设置系统转场动画[systemTransition](#systemtransition14)为Fade、Explode、SlideBottom与SlideRight时的转场效果。 931 932```ts 933@Entry 934@Component 935struct NavDestinationSystemTransition { 936 @Provide stack: NavPathStack = new NavPathStack() 937 @Provide homePageTransitionType: NavigationSystemTransitionType = NavigationSystemTransitionType.DEFAULT; 938 939 @Builder 940 pageMap(name: string) { 941 if (name === 'Fade') { 942 Fade() 943 } else if (name === 'Explode') { 944 Explode() 945 } else if (name === 'SlideRight') { 946 SlideRight() 947 } else if (name === 'SlideBottom') { 948 SlideBottom() 949 } else { 950 Dest() 951 } 952 } 953 954 aboutToAppear(): void { 955 this.stack.pushPath({name: 'Dest'}) 956 } 957 958 build() { 959 Navigation(this.stack) { 960 // empty 961 } 962 .navDestination(this.pageMap) 963 .hideNavBar(true) 964 } 965} 966 967@Component 968struct Dest { 969 @Consume stack: NavPathStack; 970 @Consume homePageTransitionType: NavigationSystemTransitionType; 971 @State name: string = 'NA'; 972 973 build() { 974 NavDestination() { 975 HomeBody() 976 } 977 .title('Navigation System Animation') 978 .onReady((context) => { 979 this.name = context.pathInfo.name 980 }) 981 .systemTransition(this.homePageTransitionType) 982 } 983} 984 985@Component 986struct Fade { 987 @Consume stack: NavPathStack; 988 @State name: string = 'NA'; 989 990 build() { 991 NavDestination() { 992 DestBody({ 993 name: this.name 994 }) 995 } 996 .title(this.name) 997 .onReady((context) => { 998 this.name = context.pathInfo.name 999 }) 1000 .systemTransition(NavigationSystemTransitionType.FADE) 1001 } 1002} 1003 1004@Component 1005struct Explode { 1006 @Consume stack: NavPathStack; 1007 @State name: string = 'NA'; 1008 1009 build() { 1010 NavDestination() { 1011 DestBody({ 1012 name: this.name 1013 }) 1014 } 1015 .title(this.name) 1016 .onReady((context) => { 1017 this.name = context.pathInfo.name 1018 }) 1019 .systemTransition(NavigationSystemTransitionType.EXPLODE) 1020 } 1021} 1022 1023@Component 1024struct SlideRight { 1025 @Consume stack: NavPathStack; 1026 @State name: string = 'NA'; 1027 1028 build() { 1029 NavDestination() { 1030 DestBody({ 1031 name: this.name 1032 }) 1033 } 1034 .title(this.name) 1035 .onReady((context) => { 1036 this.name = context.pathInfo.name 1037 }) 1038 .systemTransition(NavigationSystemTransitionType.SLIDE_RIGHT) 1039 } 1040} 1041 1042@Component 1043struct SlideBottom { 1044 @Consume stack: NavPathStack; 1045 @State name: string = 'NA'; 1046 1047 build() { 1048 NavDestination() { 1049 DestBody({ 1050 name: this.name 1051 }) 1052 } 1053 .title(this.name) 1054 .onReady((context) => { 1055 this.name = context.pathInfo.name 1056 }) 1057 .systemTransition(NavigationSystemTransitionType.SLIDE_BOTTOM) 1058 } 1059} 1060 1061@Component 1062struct DestBody { 1063 name: string = 'NA' 1064 1065 columnTextSize: number = 22 1066 columnTextFontWeight: FontWeight = FontWeight.Bolder 1067 columnWidth: string = '65%' 1068 columnPadding: number = 22 1069 columnMargin: number = 10 1070 columnBorderRadius: number = 10 1071 1072 build() { 1073 Column() { 1074 Column() 1075 .width('85') 1076 .height(50) 1077 .backgroundColor(Color.White) 1078 Column() { 1079 Text(this.name) 1080 .fontSize(this.columnTextSize) 1081 .fontWeight(this.columnTextFontWeight) 1082 } 1083 .width(this.columnWidth) 1084 .padding(this.columnPadding) 1085 .margin(this.columnMargin) 1086 .borderRadius(this.columnBorderRadius) 1087 .shadow(ShadowStyle.OUTER_DEFAULT_LG) 1088 } 1089 } 1090} 1091 1092@Component 1093struct HomeBody { 1094 @Consume stack: NavPathStack; 1095 @Consume homePageTransitionType: NavigationSystemTransitionType; 1096 1097 columnTextSize: number = 22 1098 columnTextFontWeight: FontWeight = FontWeight.Bolder 1099 columnWidth: string = '85%' 1100 columnPadding: number = 22 1101 columnMargin: number = 10 1102 columnBorderRadius: number = 10 1103 columnShadow: ShadowStyle = ShadowStyle.OUTER_DEFAULT_MD 1104 1105 build() { 1106 Column() { 1107 Search({ value: 'Search' }) 1108 .width(this.columnWidth) 1109 1110 Column() { 1111 Text('fade') 1112 .fontSize(this.columnTextSize) 1113 .fontWeight(this.columnTextFontWeight) 1114 } 1115 .width(this.columnWidth) 1116 .padding(this.columnPadding) 1117 .margin(this.columnMargin) 1118 .borderRadius(this.columnBorderRadius) 1119 .shadow(this.columnShadow) 1120 .onClick(() => { 1121 this.homePageTransitionType = NavigationSystemTransitionType.FADE 1122 this.stack.pushPath({name: 'Fade'}) 1123 }) 1124 1125 Column() { 1126 Text('explode') 1127 .fontSize(this.columnTextSize) 1128 .fontWeight(this.columnTextFontWeight) 1129 } 1130 .width(this.columnWidth) 1131 .padding(this.columnPadding) 1132 .margin(this.columnMargin) 1133 .borderRadius(this.columnBorderRadius) 1134 .shadow(this.columnShadow) 1135 .onClick(() => { 1136 this.homePageTransitionType = NavigationSystemTransitionType.EXPLODE 1137 this.stack.pushPath({name: 'Explode'}) 1138 }) 1139 1140 Column() { 1141 Text('slide right') 1142 .fontSize(this.columnTextSize) 1143 .fontWeight(this.columnTextFontWeight) 1144 } 1145 .width(this.columnWidth) 1146 .padding(this.columnPadding) 1147 .margin(this.columnMargin) 1148 .borderRadius(this.columnBorderRadius) 1149 .shadow(this.columnShadow) 1150 .onClick(() => { 1151 this.homePageTransitionType = NavigationSystemTransitionType.SLIDE_RIGHT 1152 this.stack.pushPath({name: 'SlideRight'}) 1153 }) 1154 1155 Column() { 1156 Text('slide bottom') 1157 .fontSize(this.columnTextSize) 1158 .fontWeight(this.columnTextFontWeight) 1159 } 1160 .width(this.columnWidth) 1161 .padding(this.columnPadding) 1162 .margin(this.columnMargin) 1163 .borderRadius(this.columnBorderRadius) 1164 .shadow(this.columnShadow) 1165 .onClick(() => { 1166 this.homePageTransitionType = NavigationSystemTransitionType.SLIDE_BOTTOM 1167 this.stack.pushPath({name: 'SlideBottom'}) 1168 }) 1169 } 1170 } 1171} 1172``` 1173 1174 1175 1176 1177 1178NavDestination其他用法可参考[Navigation示例](ts-basic-components-navigation.md#示例)。 1179