Как заполнить представление списка из данных Firebase в флаттере - PullRequest
0 голосов
/ 20 января 2020

Привет, я пытаюсь получить данные из базы данных Firebase в реальном времени и заполнить список во флаттере. Ниже приведено изображение, пожалуйста, проверьте перед тем, как продолжить,

Вот изображение из Firebase Теперь я хочу получить данные и заполнить список в приложении флаттера, в настоящее время я получаю в терминале, как это:

Данные: {По сообщениям Shivam Kapasia: {Электронная почта репортера: kapasiashivam007@gmail.com, Описание: нужна помощь, По сообщениям: Shivam kapasia, широта: 28.4725024, время: 17:46, местоположение: ноль, дата: пн 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 и заполнить их соответствующим образом, используя верхнюю функцию, пожалуйста, попробуйте найти решение в коде, который будет более полезным.

Заранее спасибо ...

1 Ответ

0 голосов
/ 20 января 2020

Вам нужно создать класс для всех этих данных, ваша функция 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, например, Card или Container


Если вы хотите отобразить только один экземпляр Record, вы можете вручную сделать это, добавив виджеты в ListView,

ListView( children: <Widget>[] )


Если есть что-то определенное c, вам нужна помощь, например, в настройке класса, а функции оставляют комментарий, я Буду рад помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...