UltraSwipeRefresh

fun UltraSwipeRefresh(state: UltraSwipeRefreshState, onRefresh: () -> Unit, onLoadMore: () -> Unit, modifier: Modifier = Modifier, headerScrollMode: NestedScrollMode = UltraSwipeRefreshTheme.config.headerScrollMode, footerScrollMode: NestedScrollMode = UltraSwipeRefreshTheme.config.footerScrollMode, refreshEnabled: Boolean = UltraSwipeRefreshTheme.config.refreshEnabled, loadMoreEnabled: Boolean = UltraSwipeRefreshTheme.config.loadMoreEnabled, @FloatRange(from = 0.0, fromInclusive = false) refreshTriggerRate: Float = UltraSwipeRefreshTheme.config.refreshTriggerRate, @FloatRange(from = 0.0, fromInclusive = false) loadMoreTriggerRate: Float = UltraSwipeRefreshTheme.config.loadMoreTriggerRate, headerSecondaryEnabled: Boolean = UltraSwipeRefreshTheme.config.headerSecondaryEnabled, footerSecondaryEnabled: Boolean = UltraSwipeRefreshTheme.config.footerSecondaryEnabled, headerSecondaryBehavior: SecondaryBehavior = UltraSwipeRefreshTheme.config.headerSecondaryBehavior, footerSecondaryBehavior: SecondaryBehavior = UltraSwipeRefreshTheme.config.footerSecondaryBehavior, headerSecondaryPreview: Boolean = UltraSwipeRefreshTheme.config.headerSecondaryPreview, footerSecondaryPreview: Boolean = UltraSwipeRefreshTheme.config.footerSecondaryPreview, @FloatRange(from = 1.0, fromInclusive = false) headerSecondaryTriggerRate: Float = UltraSwipeRefreshTheme.config.headerSecondaryTriggerRate, @FloatRange(from = 1.0, fromInclusive = false) footerSecondaryTriggerRate: Float = UltraSwipeRefreshTheme.config.footerSecondaryTriggerRate, @FloatRange(from = 1.0) headerMaxOffsetRate: Float = UltraSwipeRefreshTheme.config.headerMaxOffsetRate, @FloatRange(from = 1.0) footerMaxOffsetRate: Float = UltraSwipeRefreshTheme.config.footerMaxOffsetRate, @FloatRange(from = 0.0, to = 2.0, fromInclusive = false) dragMultiplier: Float = UltraSwipeRefreshTheme.config.dragMultiplier, @IntRange(from = 0, to = 2000) finishDelayMillis: Long = UltraSwipeRefreshTheme.config.finishDelayMillis, vibrationEnabled: Boolean = UltraSwipeRefreshTheme.config.vibrationEnabled, @IntRange(from = 1, to = 50) vibrationMillis: Long = UltraSwipeRefreshTheme.config.vibrationMillis, alwaysScrollable: Boolean = UltraSwipeRefreshTheme.config.alwaysScrollable, onCollapseScroll: suspend (Float) -> Unit? = null, headerIndicator: @Composable (UltraSwipeRefreshState) -> Unit = UltraSwipeRefreshTheme.config.headerIndicator, footerIndicator: @Composable (UltraSwipeRefreshState) -> Unit = UltraSwipeRefreshTheme.config.footerIndicator, headerSecondaryContent: @Composable (UltraSwipeRefreshState) -> Unit? = null, footerSecondaryContent: @Composable (UltraSwipeRefreshState) -> Unit? = null, contentContainer: @Composable (@Composable () -> Unit) -> Unit = UltraSwipeRefreshTheme.config.contentContainer, content: @Composable () -> Unit)

UltraSwipeRefresh:一个可带来极致体验的 Compose 刷新组件,支持下拉刷新和上拉加载, 可完美替代官方的 SwipeRefresh,功能更丰富,扩展性更强。

Author

Jenly

Follow me

Parameters

state

状态对象,用于控制和观察 UltraSwipeRefresh 的状态,如下拉刷新和上拉加载的触发与控制

onRefresh

下拉刷新手势触发完成时的回调

onLoadMore

上拉加载手势触发完成时的回调

modifier

修饰符,用于装饰或扩展 Compose UI 元素的行为;详细说明见 Modifier

headerScrollMode

下拉刷新时 Header 的滑动模式;详细说明见 NestedScrollMode

footerScrollMode

上拉加载时 Footer 的滑动模式;详细说明见 NestedScrollMode

refreshEnabled

是否启用下拉刷新

loadMoreEnabled

是否启用上拉加载

refreshTriggerRate

触发下拉刷新的最小滑动比例,基于 headerIndicator 的高度;默认值:1

loadMoreTriggerRate

触发上拉加载的最小滑动比例,基于 footerIndicator 的高度;默认值:1

headerSecondaryEnabled

是否启用 Header 二级内容功能

footerSecondaryEnabled

是否启用 Footer 二级内容功能

headerSecondaryBehavior

Header 二级内容交互行为模式;详细说明见 SecondaryBehavior

footerSecondaryBehavior

Footer 二级内容交互行为模式;详细说明见 SecondaryBehavior

headerSecondaryPreview

UltraSwipeHeaderState.ReleaseToSecondary 状态下是否可提前预览 Header 二级内容

footerSecondaryPreview

UltraSwipeFooterState.ReleaseToSecondary 状态下是否可提前预览 Footer 二级内容

headerSecondaryTriggerRate

触发 Header 二级内容的最小滑动比例,基于 headerIndicator 的高度;默认值:2

footerSecondaryTriggerRate

触发 Footer 二级内容的最小滑动比例,基于 footerIndicator 的高度;默认值:2

headerMaxOffsetRate

下拉时 headerIndicator 的最大滑动偏移比例,基于其自身高度;默认值:3

footerMaxOffsetRate

上拉时 footerIndicator 的最大滑动偏移比例,基于其自身高度;默认值:3

dragMultiplier

滑动时的阻力系数,值越小阻力越大;默认值:0.5

finishDelayMillis

完成状态的停留时长(毫秒),便于展示提示内容;默认值:500

vibrationEnabled

是否启用振动反馈。启用后,滑动偏移量达到阈值时将触发振动;默认值:false

vibrationMillis

触发刷新或加载时的振动时长(毫秒);默认值:25

alwaysScrollable

是否始终允许滚动。设为 true 时,不受刷新/加载状态限制,始终可滚动;默认值:false

onCollapseScroll

可选回调,当 Header/Footer 收起时用于同步调整列表位置,消除视觉回弹

headerIndicator

下拉刷新时顶部显示的 Header 指示器

footerIndicator

上拉加载时底部显示的 Footer 指示器

headerSecondaryContent

Header 二级内容(可选)

footerSecondaryContent

Footer 二级内容(可选)

contentContainer

content 的父容器,便于统一管理

content

可进行刷新或加载所包含的内容区域


fun UltraSwipeRefresh(isRefreshing: Boolean, isLoading: Boolean, onRefresh: () -> Unit, onLoadMore: () -> Unit, modifier: Modifier = Modifier, headerScrollMode: NestedScrollMode = UltraSwipeRefreshTheme.config.headerScrollMode, footerScrollMode: NestedScrollMode = UltraSwipeRefreshTheme.config.footerScrollMode, refreshEnabled: Boolean = UltraSwipeRefreshTheme.config.refreshEnabled, loadMoreEnabled: Boolean = UltraSwipeRefreshTheme.config.loadMoreEnabled, @FloatRange(from = 0.0, fromInclusive = false) refreshTriggerRate: Float = UltraSwipeRefreshTheme.config.refreshTriggerRate, @FloatRange(from = 0.0, fromInclusive = false) loadMoreTriggerRate: Float = UltraSwipeRefreshTheme.config.loadMoreTriggerRate, headerSecondaryEnabled: Boolean = UltraSwipeRefreshTheme.config.headerSecondaryEnabled, footerSecondaryEnabled: Boolean = UltraSwipeRefreshTheme.config.footerSecondaryEnabled, headerSecondaryBehavior: SecondaryBehavior = UltraSwipeRefreshTheme.config.headerSecondaryBehavior, footerSecondaryBehavior: SecondaryBehavior = UltraSwipeRefreshTheme.config.footerSecondaryBehavior, headerSecondaryPreview: Boolean = UltraSwipeRefreshTheme.config.headerSecondaryPreview, footerSecondaryPreview: Boolean = UltraSwipeRefreshTheme.config.footerSecondaryPreview, @FloatRange(from = 1.0, fromInclusive = false) headerSecondaryTriggerRate: Float = UltraSwipeRefreshTheme.config.headerSecondaryTriggerRate, @FloatRange(from = 1.0, fromInclusive = false) footerSecondaryTriggerRate: Float = UltraSwipeRefreshTheme.config.footerSecondaryTriggerRate, @FloatRange(from = 1.0) headerMaxOffsetRate: Float = UltraSwipeRefreshTheme.config.headerMaxOffsetRate, @FloatRange(from = 1.0) footerMaxOffsetRate: Float = UltraSwipeRefreshTheme.config.footerMaxOffsetRate, @FloatRange(from = 0.0, to = 2.0, fromInclusive = false) dragMultiplier: Float = UltraSwipeRefreshTheme.config.dragMultiplier, @IntRange(from = 0, to = 2000) finishDelayMillis: Long = UltraSwipeRefreshTheme.config.finishDelayMillis, vibrationEnabled: Boolean = UltraSwipeRefreshTheme.config.vibrationEnabled, @IntRange(from = 1, to = 50) vibrationMillis: Long = UltraSwipeRefreshTheme.config.vibrationMillis, alwaysScrollable: Boolean = UltraSwipeRefreshTheme.config.alwaysScrollable, onCollapseScroll: suspend (Float) -> Unit? = null, headerIndicator: @Composable (UltraSwipeRefreshState) -> Unit = UltraSwipeRefreshTheme.config.headerIndicator, footerIndicator: @Composable (UltraSwipeRefreshState) -> Unit = UltraSwipeRefreshTheme.config.footerIndicator, headerSecondaryContent: @Composable (UltraSwipeRefreshState) -> Unit? = null, footerSecondaryContent: @Composable (UltraSwipeRefreshState) -> Unit? = null, contentContainer: @Composable (@Composable () -> Unit) -> Unit = UltraSwipeRefreshTheme.config.contentContainer, content: @Composable () -> Unit)

UltraSwipeRefresh:一个可带来极致体验的 Compose 刷新组件,支持下拉刷新和上拉加载, 可完美替代官方的 SwipeRefresh,功能更丰富,扩展性更强。

Author

Jenly

Follow me

Parameters

isRefreshing

是否正在刷新

isLoading

是否正在加载

onRefresh

下拉刷新手势触发完成时的回调

onLoadMore

上拉加载手势触发完成时的回调

modifier

修饰符,用于装饰或扩展 Compose UI 元素的行为;详细说明见 Modifier

headerScrollMode

下拉刷新时 Header 的滑动模式;详细说明见 NestedScrollMode

footerScrollMode

上拉加载时 Footer 的滑动模式;详细说明见 NestedScrollMode

refreshEnabled

是否启用下拉刷新

loadMoreEnabled

是否启用上拉加载

refreshTriggerRate

触发下拉刷新的最小滑动比例,基于 headerIndicator 的高度;默认值:1

loadMoreTriggerRate

触发上拉加载的最小滑动比例,基于 footerIndicator 的高度;默认值:1

headerSecondaryEnabled

是否启用 Header 二级内容功能

footerSecondaryEnabled

是否启用 Footer 二级内容功能

headerSecondaryBehavior

Header 二级内容交互行为模式;详细说明见 SecondaryBehavior

footerSecondaryBehavior

Footer 二级内容交互行为模式;详细说明见 SecondaryBehavior

headerSecondaryPreview

UltraSwipeHeaderState.ReleaseToSecondary 状态下是否可提前预览 Header 二级内容

footerSecondaryPreview

UltraSwipeFooterState.ReleaseToSecondary 状态下是否可提前预览 Footer 二级内容

headerSecondaryTriggerRate

触发 Header 二级内容的最小滑动比例,基于 headerIndicator 的高度;默认值:2

footerSecondaryTriggerRate

触发 Footer 二级内容的最小滑动比例,基于 footerIndicator 的高度;默认值:2

headerMaxOffsetRate

下拉时 headerIndicator 的最大滑动偏移比例,基于其自身高度;默认值:3

footerMaxOffsetRate

上拉时 footerIndicator 的最大滑动偏移比例,基于其自身高度;默认值:3

dragMultiplier

滑动时的阻力系数,值越小阻力越大;默认值:0.5

finishDelayMillis

完成状态的停留时长(毫秒),便于展示提示内容;默认值:500

vibrationEnabled

是否启用振动反馈。启用后,滑动偏移量达到阈值时将触发振动;默认值:false

vibrationMillis

触发刷新或加载时的振动时长(毫秒);默认值:25

alwaysScrollable

是否始终允许滚动。设为 true 时,不受刷新/加载状态限制,始终可滚动;默认值:false

onCollapseScroll

可选回调,当 Header/Footer 收起时用于同步调整列表位置,消除视觉回弹

headerIndicator

下拉刷新时顶部显示的 Header 指示器

footerIndicator

上拉加载时底部显示的 Footer 指示器

headerSecondaryContent

Header 二级内容(可选)

footerSecondaryContent

Footer 二级内容(可选)

contentContainer

content 的父容器,便于统一管理

content

可进行刷新或加载所包含的内容区域