1

我正在创建一个聊天应用程序,但聊天滚动出现问题。就像我有 50 条消息一样,是的,我需要在第一次打开该屏幕时向下滚动以查看最新消息,我需要从最后一条消息打开我的屏幕(表示我发送或收到的最后一条消息)。

所以基本上现在我已经完成了打开页面和初始化状态的操作,我正在调用滚动控制器,然后到滚动的末尾,实际上它运行不正常。

同样,当我发送消息时,它需要自动滚动到末尾,我已将滚动添加到末尾,但它不能像滚动一样滚动,直到最后第二条消息它才滚动到最后一条消息。

这是我尝试过的代码:

   _scrollController.animateTo(
                    _scrollController.position.maxScrollExtent,
                    curve: Curves.easeOut,
                    duration: const Duration(milliseconds: 300),
                  );
4

2 回答 2

2

您可以尝试添加 PostFrameCallback:

WidgetsBinding.instance.addPostFrameCallback((_) {
  _scrollController.jumpTo(_scrollController.position.maxScrollExtent);
});

每当有重建时,它都会显示在列表的底部

于 2021-04-08T07:00:18.333 回答
0

我在使用聊天应用程序时遇到了类似的挑战,我为此找到的解决方案如下:

Align(
    alignment: Alignment.bottomCenter,
    child: ListView.builder(
      itemCount: 100,
      reverse: true,
      shrinkWrap: true,
      itemBuilder: (context, i) {
        return ListTile(
          title: Text(i.toString()),
        );
      },
    ),
  )

请记住,您必须以ListView.builder某种方式将消息数组传递给,以便您最近的消息应始终位于数组的第 0 位。您可以通过使用查询来实现它。

于 2021-04-08T07:03:34.340 回答