Отобразить ссылку на снимок документа в представлении списка построителя потоков - PullRequest
0 голосов
/ 20 апреля 2019

Вот моя база данных (скриншот)

Так что я могу отображать все книги пользователю довольно стандартным способом, используя listview:

StreamBuilder<QuerySnapshot>(
      stream: Firestore.instance.collection('books').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError)
          return new Text('Error: ${snapshot.error}');
        switch (snapshot.connectionState) {
          case ConnectionState.waiting: return new Text('Loading...');
          default:
            return new ListView(
              children: snapshot.data.documents.map((DocumentSnapshot document) {
                return new ListTile(
                  title: new Text(document['text']),
                  subtitle: // I want to display the author's name
                );
              }).toList(),
            );
        }
      },
    );

Но проблема в том, что document['author'] - это DocumentReference, который я могу получить DocumentSnapshot ds = await documentSnapshot['author'].get(). Но проблема в том, что это будущее, которое я не могу использовать внутри ListView. Каков наилучший способ сделать это? Использовать Futurebuilder для каждого снимка документа? У меня также есть несколько ссылок на документы для каждой книги в моем реальном проекте

1 Ответ

0 голосов
/ 20 апреля 2019

Возможно, вы захотите использовать FutureBuilder вместо StreamBuilder. Согласно этому ответу он также удаляет некоторый код пластины сборки. Дайте мне знать, как это разворачивается. Вы всегда можете вернуть ListView.builder, если ваш снимок не содержит ошибок. Это мой подход.

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