Firebase 错误:属性';uid';无法在';用户?';因为它可能是空的
大家好,我是Flatter和firebase的新手,我尝试做的是简单地注册新用户,然后使用自定义id将其信息添加到cloud firestore,并添加子集合名称“通知” 下面是代码示例Firebase 错误:属性';uid';无法在';用户?';因为它可能是空的,firebase,flutter,firebase-authentication,Firebase,Flutter,Firebase Authentication,大家好,我是Flatter和firebase的新手,我尝试做的是简单地注册新用户,然后使用自定义id将其信息添加到cloud firestore,并添加子集合名称“通知” 下面是代码示例 final _auth = FirebaseAuth.instance; final _ref = FirebaseFirestore.instance; final userCollections = FirebaseFirestore.instance.collection("users&
final _auth = FirebaseAuth.instance;
final _ref = FirebaseFirestore.instance;
final userCollections = FirebaseFirestore.instance.collection("users");
Future<void> SignupToColud(
{@required String name = "",
@required String email = "",
@required String pass = ""}) async {
try {
await _auth
.createUserWithEmailAndPassword(email: email, password: pass)
.then((value) {
String userId = value.user.uid;
if (userId != null) {
userCollections.doc(userId).set({'name': name, 'email': email});
userCollections
.doc(userId)
.collection("notifications")
.add({'txt': 'welcome you registered as new user succefully'});
} else {
throw Error();
}
});
// first sign up to cloud if success
//then add to users collections
} catch (e) {
print(e.toString());
}
}
这是pubspec.yaml文件信息
环境:
sdk:“>=2.12.0错误来自此行:
String userId = value.user.uid;
正如错误所说的值。user
是用户?
,这意味着它可以是user
对象,也可以是null
。您的代码需要处理is可以为null的事实,因为只有您可以决定在这种情况下该怎么做
我想你想要的是:
_auth
.createUserWithEmailAndPassword(email: email, password: pass)
.then((value) {
if (value.user != null) {
String userId = value.user!.uid;
userCollections.doc(userId).set({'name': name, 'email': email});
因此,这将检查
value.user
是否为空(而不是检查用户ID
。如果value.user
不为空,则uid
保证有一个值,因此我们可以在写入操作中使用该值。谢谢,它很有效!这个语法对我来说是新的字符串userId=value.user!.uid;我的意思是value.user!.uid,不添加!标记不起作用我得到了错误。)r!
强制Dart将可选的字符串
展开为字符串
。如果您不熟悉Dart中的空安全设置,我建议您阅读和。同时:如果我的答案有用,请单击向上投票按钮(▲) 在它的左边(您可能还没有足够的声誉)。如果它回答了您的问题,请单击复选标记(✓) 接受它。这样别人就会知道你已经得到了(足够的)帮助。也请参见
String userId = value.user.uid;
_auth
.createUserWithEmailAndPassword(email: email, password: pass)
.then((value) {
if (value.user != null) {
String userId = value.user!.uid;
userCollections.doc(userId).set({'name': name, 'email': email});