【问题标题】:How scroll down chat list view when open the chat Flutter打开聊天Flutter时如何向下滚动聊天列表视图
【发布时间】:2021-05-26 20:18:52
【问题描述】:

我想让我的聊天消息在每次打开某人的聊天时向下滚动。我曾尝试使用 jumpTo(),但没有成功。也许有人知道如何使它工作?提前谢谢!

这里是代码 sn-p

Widget ChatMessageList() {
return StreamBuilder(
  stream: chatMessageStream,
  builder: (context, snapshot) {
    return snapshot.hasData
        ? ListView.builder(
            controller: controller,
            itemCount: snapshot.data.docs.length,
            itemBuilder: (context, index) {
              return MessageTile(
                snapshot.data.docs[index].data()["message"],
                snapshot.data.docs[index].data()["sendBy"] ==
                    Constants.myName,

              );
              controller.jumpTo(controller.position.maxScrollExtent);
            },
          )
        : Container();},);}

【问题讨论】:

标签: flutter dart


【解决方案1】:

ListView.builder() 有一个名为reverse 的参数。这个默认是false,如果你把它改成true你可能会达到你想要达到的效果。

ListView.builder(
      reverse: true,
);

【讨论】:

  • 谢谢,但以防万一数据需要降序
  • 如果您也想反转您的列表,请致电snapshot.data.docs.reversed,就像下面发布的@matr0s 一样,但很乐意提供帮助
【解决方案2】:

如果您的主要目标是首先获取最新消息,您可以使用 Reverse 获取快照

final messages = snapshot.data.docs.reversed;

希望你明白了

【讨论】:

  • 对不起,我没有完全理解。能不能给个链接例子或者解释一下。
  • 我找不到一个快速准确的例子,但我在我的应用程序中做了类似的事情: * 获取必要的数据并放入单独的变量中:List messageBubbles = []; for (var message in messages) { final messageText = message.data()['text'];最终 messageSender = message.data()['sender'];最终当前用户 = 登录用户.email; .......
  • ......... 最终 messageBubble = MessageBubble( 发件人:messageSender,文本:messageText,isMe:currentUser == messageSender,); messageBubbles.add(messageBubble); }
  • 不确定是否清楚。一旦有更多时间,我会尝试分享更多数据
  • MessageBubble - 这是我的自定义小部件,我使用了四个 UI 元素。你实际上可以忽略它,只在你的小部件中显示快照数据(我猜你的情况是 MesageTile)
猜你喜欢
  • 1970-01-01
  • 2014-10-19
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多