我尝试使用图片网址显示来自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');
)
你能告诉我我的错在哪里吗?
答案 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',),),