分组显示发送者和接收者之间的消息列表,每个组标签对应于日期

Ass*_*sin 0 listview dart flutter google-cloud-firestore

我正在使用 flutter 和 firebase 构建一个一对一的聊天应用程序,我想在发生当天的标签下显示所有聊天,就像在所有主要聊天应用程序上一样。毫无疑问,我按升序从 firestore 检索数据通过在每条消息的时间戳字段上使用 order by 命令来显示时间。但是如何显示每个不同日期的日期标签。目前我正在使用 pub.dev 中的 grouped_list 包将聊天分为不同的组,但我希望处理我自己的逻辑是,有没有什么方法可以通过 flutter 中的 list.view builder 来实现相同的效果。

awa*_*aik 5

在我看来,以前的方法对于使用后端数据的实际应用程序来说并不合适。我们应该动态地将列表与日期分开。通过简单的检查即可轻松清晰地完成。

像这样的东西

    ListView.builder(
        reverse: true,
        itemBuilder: (context, int index) {
          /// separate feed by dates
          Widget separator = SizedBox();
          if (index != 0 && messages[index].createdAt.day != messages[index - 1].createdAt.day) {
            separator = Container(
              height: 2,
              width: Get.width,
              color: Colors.black,
            );
          }
          return Column(
            children: [
              separator,
              MessageBubbleWidget(messages[index]),
            ],
          );
        });
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。干杯@awaik (2认同)