ListView官网目前只介绍了一个下拉刷新功能,但上拉加载更多貌似没有甚至监听都没找到,相信以后会有大侠陆续给出自己的方案的,就像Android一样如雨后春笋,势不可挡。
在百度谷歌上目前都没有多少相关的解决方案
即使是flutter的一手资料也只给出了动态更新的方案。
看来只能靠自己了 不废话直接上源码 核心即
所摸点长度 +滑动距离 = IistView的长度 说明到达底部
var scrollController = new ScrollController(); double downY = 0.0; double lastDownY = 0.0; double lastListLength = 0.0;
new Listener( onPointerDown: (event) { print("onPointerDown=====${event.down}"); print("onPointerDown=====${event.delta}"); print("onPointerDown=====${event.kind}"); var position = event.position.distance; print("onPointerDown=====${position}"); downY = position; print("================onPointerDown================"); }, onPointerMove: (event) { var position = event.position.distance; // print("onPointerMove=====${event.position}"); // print("onPointerMove=====${event.delta}"); var detal = position - lastDownY; if (detal > 0) { print("================向下移动================"); } else { //所摸点长度 +滑动距离 = IistView的长度 说明到达底部 print("================向上移动================"); print( "scrollController==滑动距离=======${(position - downY)}"); var scrollExtent = scrollController.position .maxScrollExtent; print( "scrollController==ListView最大长度===${scrollExtent}"); print("scrollController==所摸点长度===${scrollController .offset}"); print("scrollController==所摸点离屏幕距离===${position}"); var result = scrollController.offset + (position - downY).abs(); print("scrollController==result==$result"); if (result >= scrollExtent) { print("scrollController====到达底部"); lastListLength = scrollExtent; loadMore(scrollExtent); } } lastDownY = position; }, onPointerCancel: (event) { print("onPointerCancel=====${event.position}"); }, onPointerUp: (event) { // loadMore(); print("onPointerUp=====${event.position}"); print("onPointerUp=====${event.delta}"); print("onPointerDown=====${event.down}"); }, child: new ListView.builder( //primary: false, physics: const ClampingScrollPhysics(), controller: scrollController, itemBuilder: (BuildContext context, int index) { var data = new GankBean.fromJson(datas[index]); return new NewsItemView( data.desc, data.url, data.who, data.publishedAt, data.type, ); }, itemCount: datas == null ? 0 : datas.length, ) );
Github源文件:https://github.com/goodluckforme/flutter_try/blob/master/lib/app/home/NicePage.dart
欢迎strat哦。