Navigation 的根页面是 NavBar,可以使用 hideNavBar 来隐藏,然后将开屏页移到 NavDestination 里面,刚进入应用时,在 aboutToAppear 里 push 开屏页,然后替换成首页即可,示例如下:

@Entry
@Component
struct Index {
  pathStack: NavPathStack = new NavPathStack();
......
  aboutToAppear(): void {
    this.pathStack.pushPath({ name: 'Page01' }, false);
    setTimeout(() => {
      this.pathStack.replacePath({ name: 'Page02' });
    }, 3000);
  }

  build() {
    Navigation(this.pathStack) {
    }.hideNavBar(true)
    .navDestination(this.pagesMap)
  }
}

完整示例如下:

@Component
struct Page01 {
  pathStack: NavPathStack | undefined = undefined;

  build() {
    NavDestination() {
      Column() {
        Text(`开屏广告`).fontSize(22).fontWeight(2)
      }.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)
    }.title('页面1')
    .onReady((context: NavDestinationContext) => {
      this.pathStack = context.pathStack;
    })
  }
}

@Component
struct Page02 {
  pathStack: NavPathStack | undefined = undefined;

  build() {
    NavDestination() {
      Column() {
        Text(`首页`).fontSize(22).fontWeight(2)
      }.width('100%').height('100%').justifyContent(FlexAlign.Center).alignItems(HorizontalAlign.Center)
    }.title('页面2')
    .onReady((context: NavDestinationContext) => {
      this.pathStack = context.pathStack;
    })
  }
}

@Entry
@Component
struct Index {
  pathStack: NavPathStack = new NavPathStack();

  @Builder
  pagesMap(name: string) {
    if (name == 'Page01') {
      Page01()
    } else if (name == 'Page02') {
      Page02()
    }
  }

  aboutToAppear(): void {
    this.pathStack.pushPath({ name: 'Page01' }, false);
    setTimeout(() => {
      this.pathStack.replacePath({ name: 'Page02' });
    }, 3000);
  }

  build() {
    Navigation(this.pathStack) {
    }.hideNavBar(true)
    .navDestination(this.pagesMap)
  }
}
Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐