jenly1314 / UltraSwipeRefresh

:surfer: 一个可带来极致体验的Compose刷新组件;支持下拉刷新和上拉加载,可完美替代官方的SwipeRefresh;并且支持的功能更多,可扩展性更强。
MIT License
122 stars 6 forks source link

延时回调 #1

Closed chenAstro closed 7 months ago

chenAstro commented 8 months ago

大佬,有一个想法。 像xml 版本的SmartRefreshLayout一样,能否有一个至少展示加载状态1s的设定,当然这个在外部设置state 值的时候做相应的逻辑是可以实现,但是想着更完美一点,直接在SwipeRefreshLayout 里面封装进去呢

jenly1314 commented 8 months ago

可以的,你暂时可以通过 state.isFinishing 来判定这个过程正在完成的中间状态。即:由刷新中到刷新完成或加载中到加载完成的中间状态。后续我抽空加个延时参数,让这个中间状态多停留一会儿。

jenly1314 commented 8 months ago

新发布的 v1.1.0 版本已支持此功能,可通过 README 页下载演示App进行体验。

chenAstro commented 8 months ago

新发布的 v1.1.0 版本已支持此功能,可通过 README 页下载演示App进行体验。

看了修改的代码,我的意思是loading 状态至少展示1s,因为接口返回速度太快 ,state.isRefreshing 由true 到 false 很快就完成。1.1版本优化的时候finish状态有个500ms 的延迟,loading状态不是接口耗时吗,希望这里能做一个接口耗时和1s中的较大值的loading 延迟

chenAstro commented 8 months ago

新发布的 v1.1.0 版本已支持此功能,可通过 README 页下载演示App进行体验。 希望 延迟的是 刷新中或者加载中的状态, LaunchedEffect(state.isRefreshing) { if (state.isRefreshing) { delay(100) // 将这里延迟改为100的话,状态变化太快了,导致刷新体验不好 itemCount = 20 hasMoreData = true state.isRefreshing = false } }

jenly1314 commented 8 months ago

新发布的 v1.1.0 版本已支持此功能,可通过 README 页下载演示App进行体验。

看了修改的代码,我的意思是loading 状态至少展示1s,因为接口返回速度太快 ,state.isRefreshing 由true 到 false 很快就完成。1.1版本优化的时候finish状态有个500ms 的延迟,loading状态不是接口耗时吗,希望这里能做一个接口耗时和1s中的较大值的loading 延迟

刷新耗时是具体的业务决定,本身也应该越快越好,不应该由刷新组件去故意延迟;新加的finishDelayMillis 完成时延时时间:是为了让完成时的中间状态[UltraSwipeRefreshState.isFinishing]停留一会儿,定格的展示提示内容;默认:500毫秒; 修改finishDelayMillis 的值;同样会让HeaderIndicator或FooterIndicator会停留久一点,只是目的不一样。