Flutter:无法显示来自图像URL Firestore的图像

时间:2019-02-14 05:25:16

标签: firebase dart flutter google-cloud-firestore

我尝试使用图片网址显示来自Firestore的数据。我使用FutureBuilder从Firestore获取我的图片网址值。但我有问题,因为我的图像无法显示和显示红色屏幕。我在调试控制台中收到如下消息:

  

引发了另一个异常:构建函数返回null。

     

I / flutter(13506):引发了另一个异常:NoSuchMethodError:   方法'[]'在null上调用。

     

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

你能告诉我我的错在哪里吗?

3 个答案:

答案 0 :(得分:1)

您的Future返回一个文档列表,而不仅仅是一个文档列表。您正在尝试从imageUrl列表中而不是从一个列表中获取文档的document

您的snapshot.data是文档列表,您可以在snapshot.data.documents中找到它们。

如果您只对一个文档感兴趣,建议您将Future更改为仅返回一个文档(例如获取第一个文档)的内容。

如果您想保持Future不变,只需从snapshot.data获取第一个文档,然后对其进行处理即可。

由于无法进行后勤工作(我不在家),目前我无法提供更多示例,但是如果我的建议不能帮助您解决问题,则可以为您提供一些帮助!

答案 1 :(得分:0)

使用

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

为我工作!

答案 2 :(得分:0)

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