我正在构建一个flutter应用程序,我试图创建一个方法,使用户能够在Firebase中注册,并将他们的数据存储在Firestore中。我收到一个错误,其中的身体返回空。我知道该方法必须返回用户凭据,但我有点卡住了。请任何人帮助。
下面是我的代码:
void validateAndSubmit() async {
if (validateAndSave()) {
try {
UserCredential userCredential = await FirebaseAuth.instance
.createUserWithEmailAndPassword(email: _email, password: _password)
.then((userCredential) {
FirebaseFirestore.instance.collection('users').doc(userCredential.user!.uid).set({
"uid": userCredential.user!.uid,
'Name': _name,
'userName': _userName,
'email': _email,
});
}
);
Navigator.pushNamed(context, '/home');
print('Registered user: ${userCredential.user}');
const snackBar =
SnackBar(content: Text('User has been successfully registered!'));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
} on FirebaseAuthException catch (e) {
print('Error: $e');
}
}
}
2条答案
按热度按时间b5lpy0ml1#
这个错误是由于
userCredential
可能为空,即Firebase无法使用给定的凭证创建用户。因此,最好等待FirebaseAuth
为然后使用
if
语句检查user返回的值是否为null,然后继续上面的Firestore
部分。更简单的方法是在此处添加nullcheck:
qyswt5oh2#
发生这种情况是因为您在
userCredential
上使用了!
,而userCredential
可能为空。您可以将代码更改为: