Пожалуйста, как мне установить строковую переменную в значение null в firestore с помощью flutter?

# #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, но оно отклоняет его. а также вышеприведенное решение не сработало