HarmonyOS开发:下拉刷新库和日志库已适配NEXT版本

前言

在去年的时候,自己开源了多个鸿蒙库,其中一个是日志库,一个是下拉刷新库,感兴趣的同学可以查看下,两篇文章分别是:HarmonyOS开发:封装一个便捷的Log工具类HarmonyOS开发:开源一个刷新加载组件,大家可以直接点击打开。

因为之前是基于Api9进行封装的,在NEXT版本上使用会有不同的错误报出,而且,当时在OpenHarmony三方库中心仓的审核迟迟未通过,所谓的开源使用,只能通过静态共享包的形式使用,十分的不便;最近花了一些时间,把这两个库针对NEXT版本做了更新,于是分享出来,供大家使用。

本篇的文章内容如下:

1、日志库和刷新库开源地址

2、两个库主要做了哪些更改

3、总结

一、日志库和刷新库开源地址

刷新库:

ohpm.openharmony.cn/#/cn/detail...

日志库:

ohpm.openharmony.cn/#/cn/detail...

使用方式上,不再推荐静态包har的方式,推荐以下的远程方式依赖,方便功能的更新:

在工程的oh-package.json5中设置三方包依赖,配置示例如下,依赖后,同步项目即可。

text 复制代码
"dependencies": { 
  "@abner/refresh": "^1.0.1",
  "@abner/log": "^1.0.3"
}

在OpenHarmony三方库中心仓中已经做了大量的使用描述了,这里就不多介绍了,可以点进去,详细查看使用文档。

目前针对性的也把源码开源了出来,如果功能不满足,大家可以对其做针对扩展即可。

二、两个库主要做了哪些更改

1、日志库

日志库,和之前的使用上没有大的区别,仅仅优化了json格式化输出,由于Api的升级,NEXT版本不再支持{}这种形式的传参,其参数类型也不在支持any类型,必须需要显式标注对象字面量的类型。

简单举一个例子:

在之前,我们可以传递一个大括号形式对象,或者参数定义为any。

Typescript 复制代码
error({"name":"AbnerMing"})


static error(message: any, tag?: string) {
  
}

NEXT版本以上的写法就会编译错误,其错误为arkts-no-untyped-obj-literals和arkts-no-any-unknown,也就是,需要显式标注对象字面量的类型和不支持any和unknown类型。

可以修改为以下方式:

Typescript 复制代码
error(Object({"name":"AbnerMing"}))

static error(message: Object, tag?: string) {

}

目前的日志库升级之后,关于json的打印,和以上的案例很类似,目前暂时支持对象,或者转成对象的方式,或者对象转字符串的形式,不再支持原来的大括号形式打印;其它的普通形式打印保持不变。

2、下拉刷新库

优化刷新

之前无论是列表还是网格,如果有头部View,会使得下拉头展示错误,新的版本做了彻底的优化,无论在哪使用,都会很好的展示出来,同样的针对网格布局,在NEXT版本上也做了优化。

瀑布流刷新

新的版本,增加了瀑布流模式的列表的刷新。

代码如下:

TypeScript 复制代码
    StaggeredGridView({
      items: this.array, //数据源
      itemLayout: (item: UnionData, index: number) => this.itemLayout(item, index), //条目布局
      controller: this.controller, //控制器,负责关闭下拉和上拉
      onRefresh: () => {
        //下拉刷新
        this.controller.finishRefresh()
      },
      onLoadMore: () => {
        //上拉加载
        this.controller.finishLoadMore()
      }
    })

相关属性介绍:

属性 类型 概述
columnsTemplate string 展示几列,默认是两列
columnsGap Length 列与列的间距,默认为0
rowsGap Length 行与行的间距
bgColor ResourceColor 整体的背景
sWidth Length 宽度
sHeight Length 高度

三、总结

毕竟能力有限,难免在封装的时候有遗漏或者瑕疵,大家如果在使用的时候遇到问题,都可以进行提出,我看到后会做定期的处理。

相关推荐
花卷HJ22 分钟前
Android 沉浸式全屏实践:主题 + 状态栏文字颜色完整方案
android
lili-felicity1 小时前
React Native for OpenHarmony 实战:加载效果的实现详解
javascript·react native·react.js·harmonyos
哈哈你是真的厉害1 小时前
React Native 鸿蒙跨平台开发:BaseConverter 进制转换
react native·react.js·harmonyos
奋斗的小青年!!1 小时前
Flutter跨平台开发:笔记分享功能适配OpenHarmony
flutter·harmonyos·鸿蒙
时光慢煮1 小时前
从踩坑到跑通:uni-app 项目落地 HarmonyOS 的完整实录(含模拟器 / 真机)
华为·uni-app·harmonyos
小雨青年1 小时前
我开发的鸿蒙原生应用【会议随记Pro】上架了
华为·harmonyos
花卷HJ2 小时前
Android 项目中 BaseActivity 封装实践(支持 ViewBinding、PermissionUtils动态权限、加载弹窗和跳转动画)
android
威哥爱编程2 小时前
你的手势冲突解决了吗?鸿蒙事件拦截机制全解析
harmonyos·arkts·arkui
威哥爱编程2 小时前
鸿蒙异步并发 async/await 最佳实践,代码瞬间优雅
harmonyos·arkts·arkui
2501_948122633 小时前
React Native for OpenHarmony 实战:Steam 资讯 App 服务条款实现
javascript·react native·react.js·游戏·ecmascript·harmonyos