material实际上自带有下拉刷新控件,不过既然是学习就自己实现一个,这里是实现一个IOS中比较常见的tableviewHeader式的下拉刷新控件 。效果类似于MJNormalHeader。
先踩个坑
在做下拉刷新的时候,我首先是利用滚动控件拉出滚动范围时,利用offset做处理。 也实现了,在IOS端listview有弹簧效果,因此会被拉出负的offset,但是在安卓端运行时弹簧效果却会被系统的下拉特效覆盖掉 。
因此在IOS端运行很好的下拉事件却在安卓端无法完成功能。
接下来实现下拉刷新
既然无法使用弹簧效果来实现,那么换一个思路,在listview的头部添加一个padding占位。这样就只需要改动padding的高度就可以实现将listview拉出滚动范围的效果了。
- 先用自定义statefulWidget包装一下listview,并在顶部合适的位置放一个指示下拉刷新的text,设置两个属性分别用来给内部的listview传递元素数量和build,封装一个方法,用以调起刷新事件,并将结束刷新的事件传递出去
typedef headerRefersh =