无法从Firebase检索DisplayName名称和PhotoUrl,始终返回null,Flutter

时间:2020-11-04 17:59:16

标签: android firebase flutter networkimageview

我正在尝试从firebase检索displayName名称photoUrl,因为我已经使用Google登录创建了用户,并且希望使用与Google帐户相同的显示照片和显示名称。

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

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:3)

Firebase Auth无法保证photoURL将包含一个值。绝对可以为空,在尝试显示它之前,应先进行检查。

答案 1 :(得分:0)

所以这是一个菜鸟错误,我找到了解决方法。

这是一个语法错误或更可能是区分大小写的错误。

确保在设置存储数据时,请确保名称/拼写字母与定义对时相同:

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
      });