如何在flutter中从firebase数据填充listview

Posted

技术标签:

【中文标题】如何在flutter中从firebase数据填充listview【英文标题】:How to populate listview from firebase data in flutter 【发布时间】:2020-05-06 11:10:16 【问题描述】:

您好,我正在尝试从 firebase 实时数据库中获取数据并在颤振中填充列表视图,以下是图像,请在继续之前检查,

Here is the image from firebase 现在我想在颤振应用程序中获取数据并填充列表视图,目前我正在像这样进入终端:

数据:报告人 shivam kapasia:报告人电子邮件:kapasiaashivam007@gmail.com,描述:需要帮助,报告人:shivam kapasia,纬度:28.4725024,时间:下午 5:46,地点:空,日期:周一1 月 20 日,经度:77.506273,

这是我的代码:

final databaseReference = FirebaseDatabase.instance.reference();
void createRecord() 
  _getCurrentLocation();
  databaseReference.child('Reported By ' + user.displayName).set(
    'Reported by': user.displayName,
    'Reporter Email': user.email,
    'Date': formattedDate,
    'Time': res,
    'Description': '$message',
    'longitude': longitude.toString(),
    'latitude': latitude.toString(),
    'location': '$_currentAddress'
  );


void getData() 
  databaseReference.once().then((DataSnapshot snapshot) 
    print('Data : $snapshot.value');
  );

这两个功能都运行良好。 如果您知道如何根据 firebase 的数据构建 listview 并使用上层函数相应地填充它们,请帮助我,请尝试在代码中提供更有帮助的解决方案。

提前谢谢...

【问题讨论】:

【参考方案1】:

您需要为所有这些数据创建一个类,您的createRecord() 函数效率不高。 考虑创建一个类Report,将所有信息保存到Report 的对象中。 然后,在 Report 中创建一个名为 toJSON() 的函数,它将所有数据转换为 JSON 格式,您可以直接将其传递给 firebase。 同样,您可以创建一个名为Report.fromJSON(Map snapshot) 的命名构造函数,它将从您从数据库获得的快照中为您提供Report 的对象。 现在,您可以创建一个列表 List<Report> reportList;,其中包含您从 firebase 获取的所有报告。 现在您所要做的就是将其映射为ListView,如下所示,

ListView(
children: reportList.map((element)return Container();).toList(),
)

在上面的示例中,element 将是Report 的对象,您将能够在Widget 中显示数据,例如CardContainer

如果您只想显示Record 的一个实例,您可以通过将小部件添加到ListView 来手动执行此操作,

ListView( children: <Widget>[] )

如果您有任何具体的需要帮助,例如设置类和功能发表评论,我很乐意提供帮助。

【讨论】:

以上是关于如何在flutter中从firebase数据填充listview的主要内容,如果未能解决你的问题,请参考以下文章

如何在flutter中从firebase实时数据库中获取数据?

如何在 Flutter 中从 Firebase Auth 获取用户 ID?

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

如何在 Flutter 中从 Firebase 获取当前用户 ID

在flutter应用程序中从Firebase检索数据时

在 Flutter 中从 Firebase 实时数据库读取和存储数据