解码 Firebase 实时数据库快照 Flutter

Decoding Firebase Realtime Database Snapshot Flutter

我正在为我的项目使用 firebase 实时数据库,当我从数据库中读取信息时,我得到一个对象作为输出。

final databaseInstance = FirebaseDatabase.instance;
final posts = await databaseInstance.ref("Posts").once();
print(posts.snapshot.value);

我得到的结果是{Test Post: {Description: testing 123123, Date: 19 Dec}}。但是,我不想要这种形式。我应该如何阅读它才能读取数据,以便当我想要日期时只能得到 12 月 19 日?

您可以创建一个名为 post 的 class,它具有描述和日期变量,如下所示:

   class Post{
    final String description, date;
    
    Post({
    required this.description,
    required this.date,
    });
    
    factory Post.fromJson(json){
    return Post(
    description: json['description'],
    date: json['date'],
    );
}
}

现在,当您获得快照时,只需像这样使用它:

var result = posts.snapshot.value;

final post = Post.fromJson(result['Test Post']);

你可以使用 post.date 来获取你的约会对象

糟糕,我真的找到了问题的答案。它的问题是,当 firebase 实时数据库将结果返回给我时,它并不是 json。 所以我必须自己使用函数 jsonEncode(data) 将它转换为 json。 当代码是 运行、{Test Post: {Description: testing 123123, Date: 19 Dec}}{"Test Post":{"Description":"testing 123123","Date":"19 Dec"}} 时,这解决了我的问题,因为我可以在变量后面加上 ['Test Post']