У меня ошибка переноса безопасности flutter null

# #firebase #flutter

Вопрос:

Я переношу код flutter firebase, который я написал в sdk 2.7, в версию с нулевой безопасностью, и возникла проблема. Существует проблема с snapshot.data() среди кодов моделей пользователей firebase.

 UserModel.fromMap(Maplt;String, dynamicgt; map, this.userKey, {this.reference})  : profileImg = map[KEY_PROFILEIMG],  username = map[KEY_USERNAME],  email = map[KEY_EMAIL],  likedPosts = map[KEY_LIKEDPOSTS],  followers = map[KEY_FOLLOWERS],  followings = map[KEY_FOLLOWINGS],  myPosts = map[KEY_MYPOSTS];   UserModel.fromSnapShot(DocumentSnapshot snapshot)  : this.fromMap(snapshot.data(), snapshot.id, //snapshot.data() error  reference: snapshot.reference);  

введите описание изображения здесь

ошибка моментального снимка.данные()

 The argument type 'Object?' can't be assigned to the parameter type 'Maplt;String, dynamicgt;'.  

Могу я узнать об этой проблеме? Спасибо.

Ответ №1:

Я предлагаю вам сначала глубже взглянуть на null-safty, сначала это сбивает с толку, но скоро вы легко поймете это.
Однако, короче говоря, нуль-магазина означает, что переменные не могут быть null, если вы не указали, что с ‘?’ после типа.
В коде, который вы указали в качестве первого аргумента fromMap , который является карте, что оно не может быть null, потому что вы не добавить ‘?’, и snapshot.data() может возвращать значение null.

Чтобы исправить это, вы либо:

  • Сделать карту недействительной с помощью ? быть похожим -gt; gt; Maplt;String, dynamicgt;? map что нехорошо, потому что это функция fromMap.
  • Проверьте значение snapshot.data() , если оно равно нулю:
    • Не звони fromMap .
    • Или передайте альтернативное значение, например пустой объект {}