flutter - 如何解析Flutter中limitToLast返回的DataSnapshot

标签 flutter parsing dart firebase-realtime-database

我正在尝试从Flutter中的Firebase实时数据库返回的DataSnapshot中获取“文本”。
查看此屏幕截图以了解其外观:
enter image description here
下面的代码工作正常,但由于forEach回调函数,它返回null。
如何获取text的值,以便可以在返回Future的函数中正确返回它。

Future<String> getLastMessageOfConversation(String uid) async {
    DataSnapshot dataSnapshot = await FirebaseDatabase.instance
        .reference()
        .child(ChatService.PRIVATE_CHAT)
        .child(uid)
        .limitToLast(1)
        .once();

    if (dataSnapshot.value != null) {
      dataSnapshot.value.forEach(
        (index, data) {
          MessageModel messageModel = MessageModel.fromJson(data);
          return messageModel.text;
        },
      );
    } else
      return "";
  }

最佳答案

您正在尝试从forEach循环的匿名函数返回内容。它不会将数据返回给getLastMessageOfConversation函数。 Tha就是为什么返回null的原因。
检查此代码。

Future<String> getLastMessageOfConversation(String uid) async {
    DataSnapshot dataSnapshot = await FirebaseDatabase.instance
        .reference()
        .child(ChatService.PRIVATE_CHAT)
        .child(uid)
        .limitToLast(1)
        .once();

    String message = '';
    if (dataSnapshot.value != null) {
      dataSnapshot.value.forEach(
        (index, data) {
          MessageModel messageModel = MessageModel.fromJson(data);
          message =  messageModel.text;
        },
      );
    }
  return message;
  }

关于flutter - 如何解析Flutter中limitToLast返回的DataSnapshot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62999291/

相关文章:

java - 从另一个数组的每 5 个元素创建一个 2D 数组

firebase - "java.lang.IllegalArgumentException: Unsupported value"访问FireStore子集合异常

flutter - 使用GlobalKey触发另一个状态功能

Flutter pub 由于版本不匹配而失败。 (qr_flutter 和打印)

flutter - 无法完成 Flutter 安装

android - 如何使用 flutter "File Class"删除 android 上的文件?

python - 如何解析语法 `(a | b)* a`

iphone - AQXML解析器错误: The current deployment target does not support automated __weak refrences

constructor - Dart:构造函数的扩展运算符

flutter - ListView恢复滚动位置