xuelongqy / flutter_easy_refresh

A flutter widget that provides pull-down refresh and pull-up load.
https://xuelongqy.github.io/flutter_easy_refresh/
MIT License
3.92k stars 636 forks source link

刷新过程中再次触发刷新会有问题 #633

Closed percival888 closed 1 year ago

percival888 commented 2 years ago

在下拉刷新过程中或者动画未完成时,修改了条件再次触发下拉刷新会有问题,调用callRefresh方法会不生效,

如果在刷新完动画未完成时,再次调用finishRefresh方法,后续调用callRefresh,会出现header不显示刷新动画,或者一直显示成功状态的问题

另外想问下有没有方法监听到header动画完成,彻底收回的?

pickView commented 1 year ago

同样的问题,怎么解决的

pickView commented 1 year ago

@percival888

percival888 commented 1 year ago

这个是因为刷新过程中,再次调用finishLoad会导致刷新状态管理机制异常导致的,我已经给作者提了个pr修复了,还没合并。

目前有几种方式可以暂时解决,第一个是按demo的,保证不会在刷新过程中再次触发刷新,但是这样可能跟需求预期不一致

另外可以通过控制finishLoad的触发来完成,具体核心内容是监听动画的执行,当动画执行过程中,不再触发finishLoad,同时记录是否修改了条件,如果有修改,动画执行完成后手动请求一次最新的数据就好。由于目前作者还未提供动画的状态监听,可以在调用finishLoad方法使用延时方法来大致判断动画的结束时间。

我使用的方案二,实测可行,没有明显问题

当然如果不急的话可以等作者修复哈

percival888 commented 1 year ago

同样的问题,怎么解决的

可以参考 https://github.com/percival888/flutter_easy_refresh

pickView commented 1 year ago

good job 🎉