есть ли способ помочь мне исправить тип null не является подтипом типа Map<string, dynamic>?

Я работаю над флаттером уже несколько месяцев, и 9X_flutter-appbar мне нужно понять, как исправить проблемы 9X_dart с нулевой безопасностью, но это действительно 9X_flutter-sdk сложно для меня, и я хотел бы получить помощь.

Вот 9X_dart моя проблема:

Всякий раз, когда я пытаюсь 9X_flutter-provider войти в систему, я получаю эту ошибку: тип 9X_flutter-listview «Null» не является подтипом типа Map Я 9X_flutter-listview изо всех сил пытался понять, что идет не 9X_flutter-appbar так, но я не могу, любая помощь спасет жизнь...

import 'package:cloud_firestore/cloud_firestore.dart';

class User {
 final String email;
 final String uid;
 final String photoUrl;
 final String username;
 final String bio;
 final List followers;
 final List following;

const User({
  required this.email,
  required this.uid,
  required this.photoUrl,
  required this.username,
  required this.bio,
  required this.followers,
  required this.following,
 });

тогда 9X_flutter-layout я продолжил здесь

Map toJson() => {
    "username": username,
    "uid": uid,
    "email": email,
    "photoUrl": photoUrl,
    "bio": bio,
    "followers": followers,
    "following": following,
  };

   static User fromSnap(DocumentSnapshot snap) {
   var snapshot = snap.data() as Map;

  return User(
     username: snapshot['username'],
     uid: snapshot['uid'],
     email: snapshot['email'],
     photoUrl: snapshot['photoUrl'],
     bio: snapshot['bio'],
     followers: snapshot['followers'],
     following: snapshot['following'],
      );
     }
    }

теперь я получаю сообщение 9X_flutter-layout об ошибке в этой строке: нулевой тип не 9X_flutter является подтипом Map

var snapshot = snap.data() as Map;

это 9X_flutter-appbar все моя проблема, заранее спасибо.

4
0
1
Общее количество ответов: 1

Ответ #1

Ответ на вопрос: есть ли способ помочь мне исправить тип null не является подтипом типа Map<string, dynamic>?

Ваше значение snapshot равно nullable, и вы пытаетесь преобразовать 9X_flutter-provider его в map вместо этого:

var snapshot = snap.data() as Map;

попробуйте это:

var snapshot = snap.data() != null ? snap.data() as Map : {};

Также 9X_flutter-appbar измените свой возврат на это:

return User(
     username: snapshot['username']??””,
     uid: snapshot['uid'] ??””,
     email: snapshot['email'] ??””,
     photoUrl: snapshot['photoUrl'] ??””,
     bio: snapshot['bio'] ??””,
     followers: snapshot['followers'] ??[],
     following: snapshot['following'] ??[],
  );

11
0