【发布时间】:2020-02-06 19:50:53
【问题描述】:
如果我使用 listView.builder 将项目动态添加到 listView,我如何保持列表底部的焦点?就像如果列表已满,并且我添加了一个项目,我该怎么做才能使另一个上升并聚焦最后一个项目而不删除任何内容?
【问题讨论】:
如果我使用 listView.builder 将项目动态添加到 listView,我如何保持列表底部的焦点?就像如果列表已满,并且我添加了一个项目,我该怎么做才能使另一个上升并聚焦最后一个项目而不删除任何内容?
【问题讨论】:
您好,您可以使用jumpTo() 或animateTo() 方法向ScrollController 寻求帮助,如下所示,
首先创建实例
ScrollController controller = new ScrollController();
然后在您的列表视图中注册后,如下例所示
ListView.builder(
itemBuilder: (context, index) => ListTile(
title: Text("Item List"),
),
controller: controller,
itemCount: 50,
),
最后在添加新项目时调用jumTo() or animateTo()方法,或者当你想像下面这样进入底部时
controller.jumpTo(controller.position.maxScrollExtent);
【讨论】:
接受的答案是正确的,但这个答案也会很有用,
//控制器
ScrollController _scrollController = new ScrollController();
//将此控制器添加到列表中
ListView.builder(
controller: _scrollController, //The Controller
shrinkWrap: true,
reverse: false,
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) {
//Your Widgets
})
//每次要滚动到列表底部时添加这个
_scrollController.animateTo(
_scrollController.position.maxScrollExtent,
curve: Curves.easeOut,
duration: const Duration(milliseconds: 300),
);
【讨论】: