gpt4 book ai didi

flutter - 水平 ListView.builder 上的 RefreshIndicator

转载 作者:行者123 更新时间:2023-12-05 04:50:28 27 4
gpt4 key购买 nike

我有一个水平的 ListView.builder 小部件,我想在将其向左拉时使用 RefreshIndicator 进行刷新。

                FutureBuilder(
future: _initGetTopX(),
builder: (context, wikiSnapshot) {
if (ConnectionState.active != null &&
!wikiSnapshot.hasData) {
return Center(child: CircularProgressIndicator());
}

if (ConnectionState.done != null &&
wikiSnapshot.hasError) {
return Center(child: Text(wikiSnapshot.error));
}

return Container(
height: 220,
child: RefreshIndicator(
onRefresh: _refreshInitGetTopX,
child: ListView.builder(
scrollDirection: Axis.horizontal,
physics: const AlwaysScrollableScrollPhysics(),
itemCount: _getTopXList.length,
itemBuilder: (context, index) {
return Row(
children: [
MainImageThumb(
myTitle: _getTopXList[index].title +
" (" +

列表最初正在加载,但 RefreshIndicator 没有显示,也没有重新加载...如何重新加载此列表?

最佳答案

您可以使用 ScrollController 来监听 scrollExtents

ScrollController _controller;

我们在 initState 方法中实例化它,方法如下:

@覆盖void initState() {

 _controller = ScrollController();
super.initState();

然后我们将这个 _controller 分配给我们的 ListView。

 controller: _controller,

有了这个,我们的 ListView 与我们的 ScrollController 相连,我们只需要监听事件来确定我们想要什么。监听事件

 @override
void initState() {
_controller = ScrollController();
_controller.addListener(_scrollListener);
super.initState();
}

现在我们正在监听 Scroll 事件,但是我们如何知道滚动是到达顶部还是底部。

我们只需要添加这些验证:

_scrollListener() {
if (_controller.offset >= _controller.position.maxScrollExtent &&
!_controller.position.outOfRange) {
setState(() {
message = "reach the end right";
});
}
if (_controller.offset <= _controller.position.minScrollExtent &&
!_controller.position.outOfRange) {
setState(() {
message = "reach the end left";
});
}
}

要深入了解,您可以阅读更多 here

关于flutter - 水平 ListView.builder 上的 RefreshIndicator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67262806/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com