Flutter: не удается отобразить изображение с картинки в firestore - PullRequest
0 голосов
/ 14 февраля 2019

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

Было сгенерировано другое исключение: функция сборки вернула ноль.

I / flutter (13506): было сгенерировано другое исключение: NoSuchMethodError:метод '[]' был вызван с нулевым значением.

I / flutter (13506): было сгенерировано другое исключение: NoSuchMethodError: Класс 'QuerySnapshot' не имеет метода экземпляра '[]'

а это мой код:

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');
)

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

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Использование

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,
                              ),                           )

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

0 голосов
/ 14 февраля 2019

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

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

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

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

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

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