HarmonyOS Next 教育应用之设置页面开发(二)

92 阅读1分钟

3. 清除缓存功能

clearCache 方法用于清除应用缓存,通过获取应用缓存目录,遍历目录下的文件和文件夹,并进行删除操作。

clearCache() {
  const context: Context = getContext(this);
  let cacheDir = context.cacheDir
  fs.listFile(cacheDir).then((filenames) => {
    for (let i = 0; i < filenames.length; i++) {
      let dirPath = cacheDir + filenames[i]
      try {
        // 判断是否文件夹
        let isDirectory = fs.statSync(dirPath).isDirectory()
        if (isDirectory) {
          fs.rmdirSync(dirPath)
        } else {
          fs.unlink(dirPath).then(() => {
          }).catch((err: BusinessError) => {
            Logger.error(TAG, `failed to clear cache,message is ${err.message}`)
          });
        }
      } catch (e) {
        Logger.error(TAG, `failed to clear cache,message is ${(e as BusinessError).message}`)
      }
    }
  })
}

4. 列表头部构建

itemHead 构建器函数用于构建列表的头部,根据索引设置不同的高度,实现列表分组的分隔效果。

@Builder
itemHead(index: number) {
  Row().backgroundColor('#f5f5f5').width(StyleConstants.FULL_WIDTH)
    .height(index == 0 ? 0 : 10)
}

5. 页面构建

build 方法构建整个页面,包含返回按钮、标题和列表。

build() {
  NavDestination() {
    Column() {
      Row() {
        RelativeContainer() {
          Image(ResManager.getBackIcon())
            .width(ResManager.getVp_twenty())
            .height(ResManager.getVp_twenty())
            .alignRules({
              center: { anchor: '__container__', align: VerticalAlign.Center },
              left: { anchor: '__container__', align: HorizontalAlign.Start }
            })
            .id('back')
            .margin({ left: vp2px(5) })
            .onClick(() => {
              this.pathStack.pop()
            })
          Text('设置').alignRules({
            middle: { anchor: '__container__', align: HorizontalAlign.Center },
            center: { anchor: 'back', align: VerticalAlign.Center },
          }).fontWeight(FontWeight.Medium).fontColor('333333').id('text')
        }
      }
      .width(StyleConstants.FULL_WIDTH).backgroundColor(Color.White).height(vp2px(10))

      List({ space: 10 }) {
        ForEach(setListModels, (item: [], index: number) => {
          ListItemGroup({ space: 10, header: this.itemHead(index) }) {
            ForEach(item, (project: MineSetListModel) => {
              this.MineListItem(project)
            }, (item: MineSetListModel) => item.key)
          }
          .divider({ strokeWidth: 1, color: 'f5f5f5' }) // 每行之间的分界线
        })
      }
      .width('100%')
      .sticky(StickyStyle.Header | StickyStyle.Footer)
      .scrollBar(BarState.Off)
    }
    .width(StyleConstants.FULL_WIDTH)
    .height(StyleConstants.FIFTY_HEIGHT)
    .backgroundColor(0xffffff)
    .padding({ top: 5 })
  }.hideTitleBar(true).margin({top:30})
}

总结

通过上述代码,利用 HarmonyOS Next 的 ArkTS 开发框架,成功实现了一个教育应用的设置页面。该页面具备列表项展示、退出登录提示、清除缓存等功能,体现了 HarmonyOS Next 开发的高效性和灵活性。开发者可以根据实际需求进一步扩展页面功能,如增加更多设置选项、完善退出登录和清除缓存的逻辑等。