文章

华为鸿蒙应用开发的一些坑

以下所有坑均在DevEco Studio 6.0.0版本

1.2025年9月17日,使用DevEco Studio 6.0.0 版本的话,创建新应用的话,会有报错

ERR_PNPM_NO_MATCHING_VERSION hvigor-ohos-arkui-x-plugin@4.20.3

解决方法: 在项目根目录的hvigor/hvigor-config.json5 文件里修改这个版本号为 "@ohos/hvigor-ohos-arkui-x-plugin": "4.20.0" 即可

2.有些鸿蒙的专用包下载不了,需要配置IDEnpm下载源

MAC版本的路径如下

/Applications/DevEco-Studio.app/Contents/tools/node/bin

进到这个目录执行

npm config set registry=https://repo.harmonyos.com/npm

即可解决,这个貌似是改的全局的,记得改回来npm config set registry https://registry.npmjs.org/

3.不要使用组件导航(Navigation),这个我真要哭死,复制的官网代码,运行起来一片空白,代码编译没有报错,日志里也没有任何错误,我服了。顺便说一下,build时没有报错不代表你的代码会按你的预期工作,很多时候还要看运行时的日志的。

4.IDE里的CodeGenie也不是索引的最新的文档,很多时候给出的代码是旧的,贴进IDE里会报⚠️警告是常有的事,但是很多时候有参考价值。

5.半模态框bindsheet目前的问题,就是无法设置背景颜色,如果你做了dark/light主题切换,那么无法适配,如果你想用内容区的高度设置100%bindsheet设置为heightSheetSize.MEDIUM但是内容区的内容没有超过半个屏幕的高度,会出现可以在bindsheet里面滑动的情况,滑动就滑动嘛,可是你滑动到底部的时候,还会出现底部安全区域与内容区的背景颜色不一致的问题。


新发现:

bindsheet放在页面顶层话,背景色是可以改变的,放在页面内组件的后面的话,可能会有无法设置背景颜色的问题。

如果你在一个组件绑定多个bindsheet ,那点击将无法打开bindsheet

6.bindsheet逻辑判断显示不同的内容时,注意不要在关闭的时候改变逻辑,比如如下代码

  @Builder
  private buildSheet() {
    if (this.currentSheetType === SheetType.ADD_EDIT) {
      this.buildAddEditDialog()
    } else if (this.currentSheetType === SheetType.DELETE_CONFIRM) {
      this.buildDeleteConfirmDialog()
    }
  }

你在关闭的时候,赋值 this.currentSheetType = null的时候,会导致bindsheet 关闭不了

许可协议:  CC BY 4.0