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.85k stars 630 forks source link

下拉太快会出现上次下拉成功的状态,而且无法回弹 #720

Open SeeYouWilsen opened 1 year ago

SeeYouWilsen commented 1 year ago

`class _MainAppState extends State { int count = 10; EasyRefreshController controller = EasyRefreshController(controlFinishLoad: true,controlFinishRefresh: true);

@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( body: EasyRefresh( controller: controller, refreshOnStart: true, onRefresh: (){ Future.delayed(Duration(seconds: 3),(){ setState(() { count = 20; }); controller.finishRefresh(); }); }, onLoad: (){ Future.delayed(Duration(seconds: 5),(){ setState(() { count += 1; }); controller.finishLoad(); }); }, child: ListView.separated( itemBuilder: (ctx, idx) { return Container( height: 40, child: Center(child: Text("$idx"),), ); }, separatorBuilder: (ctx, idx) { return Divider(); }, itemCount: count)), ), ); } }`

ios 16.4 flutter3.7.9 dart2.19.6

SeeYouWilsen commented 1 year ago

https://github.com/xuelongqy/flutter_easy_refresh/assets/17377866/4990de35-4493-4121-b461-bf75bdd4013e

xuelongqy commented 1 year ago

下拉太快,是因为指示器并没有完全收回就下拉,正常使用用户不会这样去触发。卡住问题有报错吗?

xuelongqy commented 1 year ago

你可以试试3.3.2,看看是否还有这个问题

smin9 commented 1 year ago

image 3.3.2+1这个版本还有这个问题,控制台也没有报错

Jamie-Ling commented 1 year ago

3.3.2+1这个版本还有这个问题,控制台也没有报错

我们这边也发现有这个问题 @xuelongqy 辛苦看看,最新代码有优化这个问题吗

xuelongqy commented 1 year ago

3.3.2+1这个版本还有这个问题,控制台也没有报错

我们这边也发现有这个问题 @xuelongqy 辛苦看看,最新代码有优化这个问题吗

这是正常的,如果不需要Footer常驻,把无限加载关闭即可。具体看示例效果

smin9 commented 1 year ago

上拉显示加载更多的时候,有时候也会出现这种情况的,需要再拉一次才正常

xuelongqy commented 1 year ago

上拉显示加载更多的时候,有时候也会出现这种情况的,需要再拉一次才正常

Flutter版本是多少?

smin9 commented 1 year ago

3.7.5

xuelongqy commented 1 year ago

3.7.5

有不有可能是模拟器的问题?鼠标滑动到了屏幕外?

Jamie-Ling commented 1 year ago
image

快速多次上拉更多,卡住后,再次上拉,会一直在这里return掉,没有反应,要重新返回前面列表,再触发一次上拉才能恢复 @xuelongqy 看看这里有什么兜底策略么?卡住时是一直没有反应的状态

smin9 commented 1 year ago

模拟器和真机我都试了,都是存在这个问题的

smin9 commented 1 year ago

image 快速多次上拉更多,卡住后,再次上拉,会一直在这里return掉,没有反应,要重新返回前面列表,再触发一次上拉才能恢复 @xuelongqy 看看这里有什么兜底策略么?卡住时是一直没有反应的状态

是的,确实是快速多次上拉,这个我忘记表述了

xuelongqy commented 1 year ago

主要是我复现不了,不知道是不是只有iOS有这个问题

smin9 commented 1 year ago

我下班帮忙测试一下android的,是否也有这个问题

Jamie-Ling commented 1 year ago

我的是android的。历史版本和最新版本都有这个问题。要快速多次连续上拉,当数据回包稍慢一点时,就比较容易出现

xuelongqy commented 1 year ago

能提供一个可运行的复现demo吗?

Jamie-Ling commented 1 year ago

看上去把processedDuration设置为0就可以了(默认是设置的1),应该是动画切换过程中状态的变化存在异常导致会卡在don的状态。 @smin9 可以试试是否也ok了

xuelongqy commented 1 year ago

我这边始终复现不了。Android12 Flutter3.10.2

smin9 commented 1 year ago

大佬你复现的时候,加上这些参数试试,const ClassicFooter( position: IndicatorPosition.above, infiniteOffset: null, maxOverOffset: 100, )

smin9 commented 1 year ago

我去掉了之后,就都是正常的。

MyNameIsShort commented 1 year ago

fileName.mov

请问您有解决这个问题吗

smin9 commented 1 year ago

你的ClassicFooter 有设置吗?position: IndicatorPosition.above, infiniteOffset: null, maxOverOffset: 100,

MyNameIsShort commented 1 year ago

那可以实现:没有完全收回不响应用户在这期间的下滑事件吗?

pre868 commented 10 months ago

我在NestedScrollView的body中复现了这个问题,正在修复中

onism0106 commented 10 months ago

看上去把processedDuration设置为0就可以了(默认是设置的1),应该是动画切换过程中状态的变化存在异常导致会卡在don的状态。 @smin9 可以试试是否也ok了

设置了Duration为zero似乎可以了!!

ShanRaw commented 9 months ago

嵌套有swiper的时候经常触发无法回弹的问题,应该是和NestedScrollView嵌套是一个问题。processedDuration设为0也无法解决,想知道预计什么时候解决? @pre868

xuelongqy commented 9 months ago

嵌套有swiper的时候经常触发无法回弹的问题,应该是和NestedScrollView嵌套是一个问题。processedDuration设为0也无法解决,想知道预计什么时候解决? @pre868

你这个问题看,README第一条

ShanRaw commented 9 months ago

嵌套有swiper的时候经常触发无法回弹的问题,应该是和NestedScrollView嵌套是一个问题。processedDuration设为0也无法解决,想知道预计什么时候解决? @pre868

你这个问题看,README第一条

感谢,使用EasyRefresh.builder解决了问题。👍👍👍