导航组件

2024-01-22 17:20 更新

导航组件,默认提供点击响应处理,不需要开发者自定义点击事件逻辑。

说明

该组件从API Version 9开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

子组件

必须包含两个子组件,其中第二个子组件必须为NavDestination

说明

子组件个数异常时:

  1. 有且仅有1个时,触发路由到NavDestination的能力失效。
  2. 有且仅有1个时,且使用NavDestination场景下,不进行路由。
  3. 大于2个时,后续的子组件不显示。
  4. 第二个子组件不为NavDestination时,触发路由功能失效。

接口

NavRouter()

事件

名称

功能描述

onStateChange(callback: (isActivated: boolean) => void)

组件激活状态切换时触发该回调。返回值isActivated为true时表示激活,为false时表示未激活。

说明:

开发者点击激活NavRouter,加载对应的NavDestination子组件时,回调onStateChange(true)。NavRouter对应的NavDestination子组件不再显示时,回调onStateChange(false)。

示例

  1. // xxx.ets
  2. @Entry
  3. @Component
  4. struct NavRouterExample {
  5. @State isActiveWLAN: boolean = false
  6. @State isActiveBluetooth: boolean = false
  7. build() {
  8. Column() {
  9. Navigation() {
  10. NavRouter() {
  11. Row() {
  12. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  13. Text(`WLAN`)
  14. .fontSize(22)
  15. .fontWeight(500)
  16. .textAlign(TextAlign.Center)
  17. }
  18. .width('90%')
  19. .height(72)
  20. NavDestination() {
  21. Flex({ direction: FlexDirection.Row }) {
  22. Text('未找到可用WLAN').fontSize(30).padding({ left: 15 })
  23. }
  24. }.hideTitleBar(false).backgroundColor('#0c182431')
  25. }.backgroundColor(this.isActiveWLAN ? '#ccc' : '#fff')
  26. .borderRadius(24)
  27. .onStateChange((isActivated: boolean) => {
  28. this.isActiveWLAN = isActivated
  29. })
  30. NavRouter() {
  31. Row() {
  32. Row().width(30).height(30).borderRadius(30).margin({ left: 3, right: 10 }).backgroundColor(Color.Pink)
  33. Text(`蓝牙`)
  34. .fontSize(22)
  35. .fontWeight(500)
  36. .textAlign(TextAlign.Center)
  37. }
  38. .width('90%')
  39. .height(72)
  40. NavDestination() {
  41. Flex({ direction: FlexDirection.Row }) {
  42. Text('未找到可用蓝牙').fontSize(30).padding({ left: 15 })
  43. }
  44. }.hideTitleBar(false).backgroundColor('#0c182431')
  45. }.backgroundColor(this.isActiveBluetooth ? '#ccc' : '#fff')
  46. .borderRadius(24)
  47. .onStateChange((isActivated: boolean) => {
  48. this.isActiveBluetooth = isActivated
  49. })
  50. }
  51. .title('设置')
  52. .titleMode(NavigationTitleMode.Free)
  53. .mode(NavigationMode.Auto)
  54. .hideTitleBar(false)
  55. .hideToolBar(true)
  56. }.height('100%')
  57. }
  58. }

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号