Firebase 颤振:无法显示图像url firestore中的图像

Firebase 颤振:无法显示图像url firestore中的图像,firebase,dart,flutter,google-cloud-firestore,Firebase,Dart,Flutter,Google Cloud Firestore,我尝试使用图像url显示firestore中的数据。我使用FutureBuilder从firestore获取图像url值。但我有问题,因为我的图像不能显示和显示红色屏幕。我在调试控制台中收到如下消息: 引发了另一个异常:生成函数返回null I/Flatter(13506):引发了另一个异常:NoSuchMethodError: 对null调用了方法“[]” I/Flatter(13506):引发了另一个异常:NoSuchMethodError: 类“QuerySnapshot”没有实例方法“[

我尝试使用图像url显示firestore中的数据。我使用FutureBuilder从firestore获取图像url值。但我有问题,因为我的图像不能显示和显示红色屏幕。我在调试控制台中收到如下消息:

引发了另一个异常:生成函数返回null

I/Flatter(13506):引发了另一个异常:NoSuchMethodError: 对null调用了方法“[]”

I/Flatter(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');
)

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

你的
未来
会返回一个文档列表,而不仅仅是一个。您试图从
文档
列表中获取文档的
imageUrl
,而不是从一个列表中获取

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

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

如果你想让你的
未来保持原样
,只需从你的
快照.data
中获取第一个文档并对其进行处理即可

目前我无法提供更多的例子,因为我无法从逻辑上做到这一点(我不在家),但如果我的建议不能帮助您解决问题,我可以提供一些给您

使用

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

为我工作

是的,谢谢!我已经试过了。。但为什么总是这样显示消息:引发了另一个异常:构建函数返回null。引发了另一个异常:NoSuchMethodError:对null调用了方法“[]”。FadeInImage最适合加载网络映像,因为占位符将首先显示,直到显示正确的映像。您可以剪切数据库映像(裁剪的映像)。因此,在此之后,很容易理解您的代码错误。
FadeInImage.assetNetwork(
width: 50.0,
height: 50.0,
fit: BoxFit.cover,
image:ContentThumbnail.thumbnails[index],
placeholder: 'images/placeholder.jpg',),),