当前位置: 首页 > 知识库问答 >
问题:

如何使用流生成器从我的消息集合中的“最后一条消息”字段返回消息

岳凯康
2023-03-14

请我需要流构建器小部件返回这最后一条消息(红色矩形框)在我的消息集合。我在下面使用的返回空字符串的方法必须在Text小部件中提供。

        class MessageScreen extends StatefulWidget {
          final String uid;
          MessageScreen(this.uid);
          @override
          _MessageScreenState createState() => _MessageScreenState();
        }
        
        class _MessageScreenState extends State<MessageScreen> {
          String uid;
          @override
          Widget build(BuildContext context) {
            return Scaffold(
              appBar: AppBar(
                elevation: 0.0,
                title: Center(
                  widthFactor: 5,
                  child: Text(
                    'Message',
                    style: mystyle(
                      20.0,
                      Style.Colors.titleColor,
                    ),
                  ),
                ),
              ),
              body: LastMessageContainer(
                  stream:
                      messageCollection.orderBy('lastMessage.timestam', descending: true).where('users', arrayContains: uid).snapshots()),
            );
          }
        }
        
        class LastMessageContainer extends StatelessWidget {
          final stream;
        
          LastMessageContainer({
            @required this.stream,
          });
        
          @override
          Widget build(BuildContext context) {
            return StreamBuilder(
              stream: stream,
              builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
                if (snapshot.hasData) {
                  var docList = snapshot.data.docs;
        
                  if (docList.isNotEmpty) {
                    Message message = Message.fromMap(docList.last.data());
                    return SizedBox(
                      width: MediaQuery.of(context).size.width * 0.6,
                      child: Text(
                        message.message,
                        maxLines: 1,
                        overflow: TextOverflow.ellipsis,
                        style: TextStyle(
                          color: Colors.grey,
                          fontSize: 14,
                        ),
                      ),
                    );
                  }
                  return Text(
                    "No Message",
                    style: TextStyle(
                      color: Colors.grey,
                      fontSize: 14,
                    ),
                  );
                }
                return Text(
                  "..",
                  style: TextStyle(
                    color: Colors.grey,
                    fontSize: 14,
                  ),
                );
              },
            );
          }
         }
         ```

   ! [![message collection screenshot][1]]
    
    
     ! [1]: https://i.stack.imgur.com/Yq4Ll.png

当我试图从消息集合下的最后一个消息字段获取消息时,它返回的错误(即必须在Text小部件中提供空字符串)发生在Text(message.message)处。

共有1个答案

薛弘壮
2023-03-14

首先,您必须在消息生成时存储时间戳。之后,您可以简单地对您的集合调用“orderby”,并按时间戳对其进行排序

 类似资料:
  • 问题内容: 通过Rabbitmq中的示例,消费者可以一次从队列中获取所有消息。如何使用一条消息并退出? 问题答案: 您必须声明basicQos设置,才能一次从ACK到NACK状态获取一条消息,并禁用自动ACK以便显式给出确认。 希望能帮助到你!

  • 在我的Scala(2.11)流应用程序中,我正在使用IBM MQ中的一个队列中的数据,并将其写入一个具有一个分区的Kafka主题。在使用MQ的数据之后,消息负载被拆分为3000个较小的消息,这些消息存储在字符串序列中。然后使用KafkaProducer将这3000条消息中的每一条发送到Kafka(2.x)。 你怎么发那3000条信息? 我不能增加IBM MQ中的队列数(不在我的控制之下),也不能增

  • 问题内容: 我的Android手机上有此代码。 我有一个在页面中加载此的asp​​.net Webform应用程序 我想从HttpReponse获取此Response并打印出来。我该怎么做呢? 我试过了,但似乎只是打印出内存中的地址。 谢谢 问题答案: 使用。一行代码。有关使用它的示例Android项目,请参见此处和此处。 在http://www.androidsnippets.org/snipp

  • 我正在开发一个使用Spring Integration 5.0.1和Spring Boot 2.0.0的应用程序。RC1 目前,应用程序响应并运行一些可能需要一段时间才能完成的初始化代码。这不使用任何Spring集成组件。 我还有一些非常基本的集成流,使用JavaDSL编写,并在配置中声明为bean。 有什么方法可以推迟流何时开始消耗消息吗?我希望能够在初始化完成时手动启动它们。 配置似乎是解决方

  • 我有一种在shell中执行此任务的方法:如何使kafka消费者从上次消耗的偏移量读取,而不是从开始读取 但是,我愿意在Python中这样做,使用 我找不到任何关于这种情况的api。 http://kafka-python.readthedocs.io/en/latest/apidoc/KafkaConsumer.html

  • 我们的应用程序中存在以下问题。消息通过入站通道适配器传入,并使用持久消息存储在聚合器中累积。一旦释放策略中定义的条件返回true,消息将被发送到处理的下一阶段。如果在下一个处理阶段抛出异常,事务将回滚,消息将再次放入持久消息存储中。但是,事务不会将消息放回原始队列,因为消息一旦放在聚合器中就会被确认。这不是我们想要的。理想情况下,如果在处理聚合器已批处理的其中一条下游消息时发生异常,则事务只会回滚