//我正在尝试做这个
字符串?userAvaterUrl = null;
//所以我可以这样做:
FutureBuilder(
future: getPicture(),
builder: (context, snapshot) {
if (snapshot.hasData || snapshot.data != null) {
return CircleAvatar(
radius: width * 0.18,
backgroundImage:
NetworkImage(snapshot.data.toString()),
);
} else {
return CircleAvatar(
radius: width * 0.18,
backgroundImage: AssetImage(
"assets/images/icons2.png"));
}
},
),
这一行:
if(snapshot.hasData || snapshot.data != null) {
...
将检查文档是否有数据。如果需要从文档中获取userAvaterUrl
,则需要使用:
backgroundImage: NetworkImage(snapshot.data['userAvaterUrl'].toString()),
,但请记住,即使snapshot.hasData || snapshot.data != null
,snapshot.data['userAvaterUrl']
可以为空,你可能想要确保你的应用程序可以处理。因此,您可能想这样做:
if(snapshot.hasData &&
snapshot.data != null &&
snapshot.data['userAvaterUrl'] != null &&
snapshot.data['userAvaterUrl'] is String
) {
... // return avatar with the network image
} else {
... // return avatar with the asset image
}
顺便说一下,如果你使用的是带有null-safety的flutter 2,这个:
String? userAvaterUrl = null;
就是
String? userAvaterUrl; // no need to set to null