我正在尝试从firebase检索displayName名称photoUrl,因为我已经使用Google登录创建了用户,并且希望使用与Google帐户相同的显示照片和显示名称。
child: ListTile(
title: Text("${user.displayName}"),
subtitle: Text("${user.username}"),
leading: CachedNetworkImage(
imageUrl: user.photoUrl,
placeholder: (context, url) => circularProgress(),
),
),
答案 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
});