我正在开发一个聊天应用程序,我正在向 chatList 添加数据,这是模型列表,我从后端获取最新数据,就像当我调用 API 时,它会给出最后一条消息,所以我需要从分页获取数据,而无需使用任何延迟加载方法或其他方法,因此当我获取数据以获取更多数据时,我需要调用API,并且我的列表是反向列表(我的UI不同,所以我不能在listview中使用反向属性),所以我需要插入像这样将数据添加到第一个索引
list.insertAll(0,data)
,但是当我这样做时,我的列表会自动滚动,但当我使用list.add()
时,它不会自动滚动。
我已经尝试了大多数方法和滚动物理,即使我制作了一个自定义滚动物理,它在插入数据时保持滚动,但在我在演示项目上创建的项目中没有任何效果,并且它正在其中工作。
你可以尝试以下方法吗?
将此 Scrollcontroller 添加到您的小部件中。
final ScrollController _scrollController = ScrollController();
将控制器添加到您的 ListView(或您使用的任何内容)
return ListView.builder(
controller: _scrollController, //add this line
...
让我们先尝试使用按钮。
IconButton(
onPressed: () {
if (_scrollController.hasClients) {
final position =
_scrollController.position.maxScrollExtent; //or minScrollExtent
_scrollController.animateTo(
position,
duration: Duration(seconds: 1),
curve: Curves.easeInOut,
);
}
},
icon: Icon(Icons.arrow_downward))
只需尝试添加具有“keepScrollOffset”属性的控制器,看看它是否有效。 示例
ScrollController controller = ScrollController(keepScrollOffset: true);
ListView.builder(
controller: controller
reverse: true,
itemBuilder: .....
);
向列表添加数据时使用此语句
controller .jumpTo(0.0);
list.insertAll(0, newData);