# #flutter #google-cloud-firestore #null #dart-null-safety
Вопрос:
//Я пытаюсь сделать эту
строку? 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"));
}
},
),
Комментарии:
1. вы не возражаете исправить код, который вы опубликовали выше?
Ответ №1:
эта строка:
if(snapshot.hasData || snapshot.data != null) {
...
проверил бы, есть ли в документе данные. если вам нужно получить userAvaterUrl
информацию из документа, вам нужно будет использовать:
backgroundImage: NetworkImage(snapshot.data['userAvaterUrl'].toString()),
но помните , что даже если snapshot.hasData || snapshot.data != null
, snapshot.data['userAvaterUrl']
может быть равно нулю, и вы можете убедиться, что ваше приложение справится с этим. поэтому вместо этого вы, возможно, захотите сделать это:
if(snapshot.hasData amp;amp;
snapshot.data != null amp;amp;
snapshot.data['userAvaterUrl'] != null amp;amp;
snapshot.data['userAvaterUrl'] is String
) {
... // return avatar with the network image
} else {
... // return avatar with the asset image
}
кстати, если вы используете flutter 2 с нулевой безопасностью, это:
String? userAvaterUrl = null;
было бы просто
String? userAvaterUrl; // no need to set to null
Комментарии:
1. Я хочу сделать: Строка? userAvaterUrl; поэтому я могу отправить нулевое значение в firestore, но оно отклоняет его. а также вышеприведенное решение не сработало