Skip to content

上下拉刷新PullToRefresh

一、效果总览

二、描述

  • 支持上下拉刷新, 无数据侵入。

  • 支持任意组件的嵌套,支持任意布局(List,Grid,Web,Scroll,Text,Row,Column)等布局

  • 支持自定义异常页面loading页面等。

  • 支持主动调用进入上下拉状态

三、构造函数及参数说明

OmniPullToRefreshLayout

参数名参数类型描述是否必填默认值
configOmniRefreshLayoutConfig上下拉配置项
controllerOmniPullableController用于控制和获取上下拉控制器的状态
scrollerScroller内容视图的引用
onRefresh() => void下拉刷新的回调null
onPullListener(OmniPullDown: OmniPullDown) => void上下拉加载状态监听null
contentView() => void设置内容视图null
viewLoading() => void加载中自定义视图null
viewEmpty() => void空数据自定义视图null
viewError() => void数据错误自定义视图null
viewNoNetwork() => void网络异常自定义视图null

OmniPullableController

参数名参数类型描述是否必填默认值
refreshSuccess() => void下拉刷新成功,当数据处理完成后需要根据数据情况调用该方法null
loadSuccess(hasMore?: boolean) => void下拉刷新成功, 当数据处理完成后需要根据数据情况调用该方法null
viewLoading() => void当需要展示自定义loadingView时调用该方法null
viewEmpty() => void当需要展示自定义emptyView时调用该方法null
viewError() => void当需要展示自定义errowView时调用该方法null
refresh() => void手动触发下拉刷新null
load() => void手动触发上拉加载null

OmniRefreshLayoutConfig

参数名参数类型描述是否必填默认值
pullRefreshEnablebool是否开启下拉刷新true
loadMoreEnablebool是否开启上拉加载false
pullMaxDistancenumber下拉最大距离500
pullRefreshResistancenumber下拉阻力0.5
pullLoadMaxDistancenumber上拉最大距离500
pullLoadResistancenumber上拉阻力0.5

OmniPullStatus

枚举值含义
DEF默认状态
PullDown正在下拉
PreRefresh达到可下拉状态
Refresh刷新中
RefreshSuccess刷新成功
RefreshError刷新失败
PullUp正在加载
PreLoad达到可加载状态
Load加载中
LoadSuccess加载成功
LoadError加载失败

四、代码演示

typescript
public controller: OmniPullableController = new OmniPullableController()
private config: OmniRefreshLayoutConfig = new OmniRefreshLayoutConfig();
scroller: Scroller = new Scroller()
  
  OmniPullToRefreshLayout({
  scroller: this.scroller,
  config: this.config,
  controller: this.controller,
  viewError: () => {
    // 自定义数据异常视图
  },
  viewEmpty: () => {
    // 自定义无数据视图
  },
  viewNoNetwork: () => {
    // 自定义网络异常视图
  },
  viewLoading: () => {
   // 自定义加载态视图
  },
  contentView: () => {
    this.contentView()
  },
  onRefresh: () => {
   // 下拉刷新回调, 执行数据操作
    this.controller.refreshSuccess()
  },
  onLoad: () => {
    // 上拉加载回调, 执行数据操作
    this.controller.loadSuccess(false)
  },
  onPullListener: (pullDown) => {
    // 获取上下拉状态监听
  },
}).width("100%").height("70%").clip(true)

@Builder
contentView() {
  List({ scroller: this.scroller }) {
   // 省略自定义视图代码
  }.width("100%").height("100%")
    .edgeEffect(EdgeEffect.None)
}