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.88k stars 633 forks source link

Material 刷新触发问题 #661

Closed czbill closed 1 year ago

czbill commented 1 year ago

发现体验问题:下拉刷新操作困难,真正触发刷新的滑动距离,远比默认的100要大得多。

MaterialHeader

  const MaterialHeader({
    this.key,
    double triggerOffset = 100,
    bool clamping = true,

暂时解决办法:

把源码撸下来,MaterialHeader增加拖拽速度因子_dragSpeed,传递参与滑动距离计算


HeaderNotifier#_calculateOffset

// Moving distance
final move = (position.minScrollExtent - value)*_dragSpeed;

建议把拖拽惯性考虑进去,也就是说猛向下滑动松开,应该能成功触发刷新。期待大神对作品进一步改良。@xuelongqy

xuelongqy commented 1 year ago

是否存在安全区域呢?可以试试把safeArea设置为false

czbill commented 1 year ago

是否存在安全区域呢?可以试试把safeArea设置为false

关掉safeArea,Material 下问题依旧哈。

xuelongqy commented 1 year ago

指示器提供frictionFactor,可以设置摩擦系数。我觉得你可以试试看

czbill commented 1 year ago

指示器提供frictionFactor,可以设置摩擦系数。我觉得你可以试试看

有效,问题解决,感谢🙏

double kMaterialHeaderFactorFactor(double overscrollFraction) => 2.0 * math.pow(1 - overscrollFraction, 2);

按这个设置,比较接近Android原生的效果

xuelongqy commented 1 year ago

3.2.0+1,做了一点调整