Listview构建器在插入数据时自动滚动列表 - flutter

问题描述 投票:0回答:2

我正在开发一个聊天应用程序,我正在向 chatList 添加数据,这是模型列表,我从后端获取最新数据,就像当我调用 API 时,它会给出最后一条消息,所以我需要从分页获取数据,而无需使用任何延迟加载方法或其他方法,因此当我获取数据以获取更多数据时,我需要调用API,并且我的列表是反向列表(我的UI不同,所以我不能在listview中使用反向属性),所以我需要插入像这样将数据添加到第一个索引

list.insertAll(0,data)
,但是当我这样做时,我的列表会自动滚动,但当我使用
list.add()
时,它不会自动滚动。

我已经尝试了大多数方法和滚动物理,即使我制作了一个自定义滚动物理,它在插入数据时保持滚动,但在我在演示项目上创建的项目中没有任何效果,并且它正在其中工作。

flutter list dart mobile scroll
2个回答
0
投票

你可以尝试以下方法吗?

将此 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))

0
投票

只需尝试添加具有“keepScrollOffset”属性的控制器,看看它是否有效。 示例

ScrollController controller = ScrollController(keepScrollOffset: true);

ListView.builder(
  controller: controller
  reverse: true, 
  itemBuilder: .....
);

向列表添加数据时使用此语句

controller .jumpTo(0.0); 
list.insertAll(0, newData);
© www.soinside.com 2019 - 2024. All rights reserved.