Flutter: невозможно отобразить изображение с URL-адреса изображения firestore

Я пытаюсь отобразить данные из firestore, используя URL-адрес изображения. я использую FutureBuilder для получения значения URL-адреса моего изображения из firestore. но у меня проблема, потому что мое изображение не может отображаться и показывать красный экран. я получил сообщения в моей консоли отладки, например:

Another exception was thrown: A build function returned null.

I/flutter (13506): Another exception was thrown: NoSuchMethodError: The method '[]' was called on null.

I/flutter (13506): Another exception was thrown: NoSuchMethodError: Class 'QuerySnapshot' has no instance method '[]'

и это мой код:

ListTile(
  leading: new FutureBuilder(
    future: Firestore.instance.collection('users').where('uid', isEqualTo: _post['imgurl']).getDocuments(),
    builder: (BuildContext context, AsyncSnapshot snapshot){
      if (snapshot.hasData){
        if (snapshot.data != null){
          print(snapshot.data['imgurl']);
          return CircleAvatar(
            backgroundImage: NetworkImage(snapshot.data['imgurl']),
          );
        }
      }
    },
  ),
  title: Text('Richard');
)

ты можешь сказать мне, где моя вина?

Можете ли вы обрезать изображение базы данных (обрезанное изображение). Так что после этого легко понять вашу ошибку в коде.

shirsh shukla 12.11.2020 14:54
Интеграция Angular - Firebase Analytics
Интеграция Angular - Firebase Analytics
Узнайте, как настроить Firebase Analytics и отслеживать поведение пользователей в вашем приложении Angular.
3
1
1 356
3

Ответы 3

Ваш Future возвращает список документов, а не один. Вы пытаетесь получить imageUrl документа из списка document, а не из одного.

Ваш snapshot.data — это список документов, вы можете найти их в snapshot.data.documents.

Если вас интересует только один документ, я предлагаю вам изменить Future на что-то, что возвращает только один документ (например, получение первого).

Если вы хотите сохранить свой Future как есть, просто получите первый документ из своего snapshot.data и поработайте над ним.

На данный момент я не могу предоставить дополнительные примеры, так как я не могу сделать это логически (я не дома), но могу предоставить вам некоторые, если мои предложения не помогут вам решить!

да спасибо! Я пробовал это ... но почему всегда показывать такое сообщение: Было выбрано еще одно исключение: функция сборки вернула значение null. Было выдано другое исключение: NoSuchMethodError: метод '[]' был вызван при нулевом значении.

UnderdoX 14.02.2019 11:40

Использовать

Image.network(widget.snapshot.data['imgurl'])

Вот как я справился с проблемой:

Card(
                              margin: EdgeInsets.symmetric(
                              horizontal: 10.0, vertical: 6.0),
                              elevation: 8.0,
                              child:
                              Image.network(
                                widget.ds.data['GraphImg'],
                                fit: BoxFit.contain,
                              ),                           )

работал на меня!

FadeInImage.assetNetwork(
width: 50.0,
height: 50.0,
fit: BoxFit.cover,
image:ContentThumbnail.thumbnails[index],
placeholder: 'images/placeholder.jpg',),),

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

Miriam 29.05.2020 19:37

Другие вопросы по теме