Невозможно получить имя DisplayName и PhotoUrl из firebase, всегда возвращая значение null, Flutter

Я пытаюсь получить отображаемое имя photoUrl из firebase, поскольку я создал пользователя с помощью входа в Google, и я хочу использовать отображаемую фотографию и отображаемое имя в качестве имени учетной записи Google.

child: ListTile(
              title: Text("${user.displayName}"),
              subtitle: Text("${user.username}"),
              leading: CachedNetworkImage(
                imageUrl: user.photoUrl,
                placeholder: (context, url) => circularProgress(),
              ),
            ),

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

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


person Farrukh Sajjad    schedule 04.11.2020    source источник
comment
Какой метод вы используете для получения данных?   -  person Will Hlas    schedule 04.11.2020


Ответы (2)


Firebase Auth не гарантирует, что photoURL будет содержать значение. Он определенно может быть нулевым, и вы должны проверить это, прежде чем пытаться отобразить его.

person Doug Stevenson    schedule 04.11.2020

Так что это была ошибка нуба, и я нашел решение.

Это была грамматическая или, что более вероятно, регистрозависимая ошибка.

Убедитесь, что, когда вы устанавливаете данные для своего хранилища, сохраняйте имя/правописание таким же, как при определении пар:

class User {
  final String username;
  final String photoUrl;
  final String id;
  final String email;
  final String displayName;
  final String bio;

  User(
      {this.username,
      this.photoUrl,
      this.id,
      this.email,
      this.displayName,
      this.bio});

  factory User.fromDocument(DocumentSnapshot doc) {
    return User(
      id: doc['id'],
      username: doc['username'],
      email: doc['email'],
      photoUrl: doc['photoUrl'],
      bio: doc['bio'],
      displayName: doc['displayName'],
    );
  }
}

Значение параметра для Firebase:

 usersRef.document(user.id).setData({
        "id": user.id,
        "username": username,
        "photoUrl": user.photoUrl,
        "email": user.email,
        "displayName": user.displayName,
        "bio": "",
        "timestamp": timestamp
      });
person Farrukh Sajjad    schedule 05.11.2020