首页 > 解决方案 > 如何访问子列表数据并在 Dart/Flutter 中的函数中返回?

问题描述

我创建了一个新函数,并将 Firebase 快照流作为streamFinal传入函数的变量传递:

Future<List<ChatMessage>> _prepareListData(streamFinal) {
    List<ChatMessage> msgList = [];
    int counter = 0;
    // objects map
    streamFinal.map((event) {
      // documents map
      event.docs.map((item) {
        Map<String, dynamic> uData = item.data() as Map<String, dynamic>;
        ChatMessage messageInfo = ChatMessage(
          encMessageId: uData['encMessageId'] ?? "",
          encSenderUId: uData['encSenderUId'] ?? "",
          encReceiverUId: uData['encReceiverUId'] ?? "",
          contentType: uData['contentType'] ?? "",
          fileType: uData['fileType'] ?? "",
          fileTitle: uData['fileTitle'] ?? "",
          filename: uData['filename'] ?? "",
          fileSize: uData['fileSize'] ?? "",
          fileDuration: uData['fileDuration'] ?? "",
          message: uData['message'] ?? "",
          sentOn: uData['sentOn'] ?? Timestamp.now(),
          seenOn: uData['seenOn'] ?? Timestamp.now(),
          sent: uData['sent'] ?? false,
          received: uData['received'] ?? false,
          seen: uData['seen'] ?? false,
        );
        msgList.add(messageInfo);
        counter = counter +1;
        print("counter: $counter");
        // printing counter from 1 to 19 means we have 19 records of messageInfo variable
      }).toList();
    }).toList();

    print('prepare msgList length: ${msgList.length} == $counter');
    // prepare msgList length: 0 == 0

    return msgList;
  }

这个函数在计数器被打印 19 次时返回一个包含空元素的空白列表。我知道我有 19 条记录,但无法将所有记录添加messageInfomsgList变量中。

有没有人有这样的经验并帮助我解决这个问题?非常感谢。

标签: flutterdart

解决方案


推荐阅读