找回密码
 立即注册
首页 业界区 业界 鸿蒙Next仓颉语言开发实战教程:下拉刷新和上拉加载更多 ...

鸿蒙Next仓颉语言开发实战教程:下拉刷新和上拉加载更多

梨恐 2025-6-10 13:43:22
在移动应用中,各种列表页面离不开下拉刷新和上拉加载更多,我们的商城应用也是如此。今天介绍一下在仓颉开发语言中如何实现这一功能。
下拉刷新
1.png

仓颉开发语言直接提供了下拉刷新的组件,叫做Refresh,使用起来也非常方便:
  1. @State var headerLoading : Bool = false;
  2. Refresh(RefreshParams(refreshing: @Binder(this.headerLoading))) {
  3. List{
  4.         ForEach(this.carList,
  5.         itemGeneratorFunc:{
  6.             
  7.             item:CarItem, index: Int64 => ListItem {
  8.             }
  9.             })
  10.         }
  11. }
  12. .onRefreshing({ =>
  13.     Timer.once(Duration.second*2,{=>
  14.             this.headerLoading = false
  15.            })
  16.     AppLog.info('onRefreshing')
  17.     })
  18. .onStateChange({state =>
  19.      AppLog.info('onStateChange')
  20.     })
复制代码
上述代码演示了Refresh的基本使用,并且使用计时器模拟网络加载效果,两秒后自动加载完成,其中onRefreshing是进入刷新状态的回调,onStateChange为刷新状态改变的回调。
计时器的用法也还需要大家再次熟悉一下,Timer.once表示一次性的计时器,Duration.second*2表示执行间隔是2秒,这种写法还是比较独特的。
上拉加载更多
关于上拉加载更多,仓颉的文档中并没有这部分的内容,幽蓝君参考ArkTs写了一个解决方案,仅供大家参考。
2.png

实现思路是在List最后一行添加加载动画组件,默认隐藏,当List滑动到最后一行则显示加载动画并开始请求数据,具体代码如下:
  1. @State var footerLoading:Bool = false
  2. List{
  3.     ForEach(this.carList,
  4.         itemGeneratorFunc:{
  5.             
  6.             item:CarItem, index: Int64 => ListItem {
  7.             }
  8.             })
  9.    
  10.     ListItem {
  11.         if(this.footerLoading){
  12.             Row(12){
  13.                 LoadingProgress()
  14.                 .height(40)
  15.                 .width(40)
  16.                
  17.                 Text('加载中...')
  18.                 .fontSize(14)
  19.                 .fontColor(Color.GRAY)
  20.             }
  21.             .width(100.percent)
  22.             .height(50)
  23.             .alignItems(VerticalAlign.Center)
  24.             .justifyContent(FlexAlign.Center)
  25.         }
  26.     }
  27. }
  28. .onScrollIndex({startNum,endNum =>
  29.     if(Int64(endNum) >= this.carList.size - 1){
  30.             this.footerLoading = true
  31.             Timer.once(Duration.second*3,{=>
  32.                         this.footerLoading = false
  33.                     })
  34.     }
  35.     CJTools.log('endNum-list:' + this.carList.size.toString())
  36.     })
复制代码
上面代码需要注意的是如何判断列表滑动到了底部,主要是判断数组的长度,在仓颉中数组的长度属性是size,类型是Int64。
以上就是今天的内容分享,感谢阅读。##HarmonyOS语言##仓颉##购物#

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册