Как получить данные из FireBase в флаттер - PullRequest
0 голосов
/ 01 сентября 2018

Я создаю приложение для флаттера и использую облачный пожарный магазин, так выглядит моя база данных enter image description here

Мне нужна функция, которая извлекает все документы в коллекции под названием «Список драйверов» в виде массива строк. то, что я уже использовал, но возвращает их в виде списка на новом экране

class DriverList extends StatelessWidget {@overrideWidget build(BuildContext context) {
return new StreamBuilder<QuerySnapshot>(
  stream: Firestore.instance.collection('DriverList').snapshots(),
  builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
    if (!snapshot.hasData) return new Text('Loading...');
    return new ListView(
      children: snapshot.data.documents.map((DocumentSnapshot document) {
        return new ListTile(
          title: new Text(document['name']),
          subtitle: new Text(document['phone']),
        );
      }).toList(),
    );
  },
);

} }

1 Ответ

0 голосов
/ 01 сентября 2018

Это имеет некоторую дополнительную логику для удаления потенциально дублирующих записей, но вы можете использовать что-то вроде следующего для извлечения данных из Firestore.

Мы получаем доступ к ссылке на коллекцию, затем перечисляем результаты запроса, затем создаем локальные объекты модели для данных, возвращаемых Firestore, и затем мы возвращаем список этих объектов модели.

  static Future<List<AustinFeedsMeEvent>> _getEventsFromFirestore() async {
CollectionReference ref = Firestore.instance.collection('events');
QuerySnapshot eventsQuery = await ref
    .where("time", isGreaterThan: new DateTime.now().millisecondsSinceEpoch)
    .where("food", isEqualTo: true)
    .getDocuments();

HashMap<String, AustinFeedsMeEvent> eventsHashMap = new HashMap<String, AustinFeedsMeEvent>();

eventsQuery.documents.forEach((document) {
  eventsHashMap.putIfAbsent(document['id'], () => new AustinFeedsMeEvent(
      name: document['name'],
      time: document['time'],
      description: document['description'],
      url: document['event_url'],
      photoUrl: _getEventPhotoUrl(document['group']),
      latLng: _getLatLng(document)));
});

return eventsHashMap.values.toList();
}

Источник: https://github.com/dazza5000/austin-feeds-me-flutter/blob/master/lib/data/events_repository.dart#L33

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