Closed Nicholas86 closed 9 months ago
你可以试试结合这个flutter_scrollview_observer。你的意思应该是列表定位,CustomScrollView有一个center的参数,不过你要进行很多额外的处理。这是一个Flutter层面的提问,不属于issue,建议你加群交流。
你可以试试结合这个flutter_scrollview_observer。你的意思应该是列表定位,CustomScrollView有一个center的参数,不过你要进行很多额外的处理。这是一个Flutter层面的提问,不属于issue,建议你加群交流。
可能是我没说清楚,导致了误解。重新表述下。 1、页面initState初始化方法中, 设置全局页数变量pageNum = 1, 不调用onRefresh() 2、设置refreshOnStart=true; 3、此时, 页面会出现下拉刷新文案,你的框架提供的 4、再疯狂上拉加载。上拉加载的方法里, 将全局页数变量pageNum+1; 5、按照以上步骤,测试发现,pageNum=1的数据源并没有请求、也没有请求成功,就直接去请求pageNum=2的数据了,并且pageNum=2的数据源请求成功、展示到页面上了。也就是说, pageNum=1的请求丢掉了。
全局页数变量: pageNum = 1;
late refreshController
List results = [];
initState() { super.initState(); pageNum = 1; refreshController = EasyRefreshController( controlFinishLoad: true, controlFinishRefresh: true, ); }
build() { return EasyRefresh( controller: refreshController, refreshOnStart: true, onRefresh: () async { await onRefresh(); }, onLoad: () async { await onLoad(); }, child: SizedBox( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height, child: ListView.builder( padding: EdgeInsets.zero, itemBuilder: (context, index) { return Contain(); }, itemCount: results.length, ) ) ); }
onRefresh() async { pageNum = 1; try { var response = await ClientQuest.requestList( pageNum: 10, pageSize: pageNum);
/// 使用全局变量results, 接收服务端返回的list, 并setState()
refreshController.finishRefresh(IndicatorResult.success);
if (response.data.isEmpty) {
refreshController.finishLoad(IndicatorResult.noMore);
}
} catch (error) {
refreshController.finishRefresh(IndicatorResult.fail);
}
}
onLoad() async { pageNum += 1; try { var response = await ClientQuest.requestList( pageNum: 10, pageSize: pageNum); /// 使用全局变量results, 接收服务端返回的list, 并setState()
if (response.data.isEmpty) {
refreshController.finishLoad(IndicatorResult.noMore);
} else {
refreshController.finishLoad(IndicatorResult.success);
}
} catch (error) {
refreshController.finishLoad(IndicatorResult.fail);
}
}
意思是,首次刷新被打断了嘛?
意思是,首次刷新被打断了嘛?
我觉得是。你的下拉刷新自动刷新文案出来后,过一点点时间
后,才执行onRefresh方法。在这一点点时间
内,我疯狂上拉加载更多,那么, pageNum+1=2了, 此时请求的就是第二页数据了。第一页的请求在那一点点时间
内,要么没发出去,要么,发出来被打断了。期待你的回复。
好的,非常感谢,确实有这个问题。修复后,我会在此issue中回复
好的,非常感谢,确实有这个问题。修复后,我会在此issue中回复
这个库不错。不断向前,与时俱进。使这个库更完善、更成熟。
3.3.3已修复
3.3.3已修复
👍🏻
默认pageNum=1, 正在执行自动刷新。此时不停触发上拉加载更多,页数pageNum+1, 然后pageNum+1的数据显示在最前面, 也就是第二页的数据在最前面。