TypeError:无法读取空颤动的属性“uid”
Posted
技术标签:
【中文标题】TypeError:无法读取空颤动的属性“uid”【英文标题】:TypeError: Cannot read property 'uid' of null flutter 【发布时间】:2021-06-24 17:16:12 【问题描述】:我目前在登录时遇到此错误消息,我的注册功能工作正常。但似乎无法弄清楚为什么我的登录总是带来这个错误。如果我能指出我的错误来自哪里,我将不胜感激。
void loginUser() async
User user;
await _auth
.signInWithEmailAndPassword(email: email.text, password: password.text)
.then((value)
setState(()
loading = false;
);
return value;
).catchError((error)
Navigator.pop(context);
Get.defaultDialog(title: 'Error in Login');
);
if (user != null)
readData(user).then((value) => Get.toNamed(homeRoute));
Future readData(User user) async
FirebaseFirestore.instance
.collection('users')
.doc(user.uid)
.get()
.then((result) async
await App.sharedPreferences.setString('uid', result.get('uid'));
await App.sharedPreferences.setString('email', result.get('email'));
await App.sharedPreferences.setString('fullname', result.get('fullname'));
await App.sharedPreferences.setString('bvn', result.get('bvn'));
);
这是我的注册功能
void _registerUser() async
User user;
await _auth
.createUserWithEmailAndPassword(
email: email.text, password: password.text)
.then((value)
user = value.user;
).catchError((error)
Navigator.pop(context);
Get.defaultDialog(title: 'Error in registration');
);
if (user != null)
saveToFirestore(user).then((value) => Get.toNamed(homeRoute));
Future saveToFirestore(User user) async
FirebaseFirestore.instance.collection('users').doc(user.uid).set(
'uid': user.uid,
'fullname': fullname.text.trim(),
'email': user.email,
'bvn': bvn.text
);
await App.sharedPreferences.setString('uid', user.uid);
await App.sharedPreferences.setString('email', user.email);
await App.sharedPreferences.setString('fullname', fullname.text);
await App.sharedPreferences.setString('bvn', bvn.text);
【问题讨论】:
【参考方案1】:改变
User user;
await _auth
致User user = await _auth....
在您的 FireStore 查询中,使用
Future readData(User user) async
FirebaseFirestore.instance
.collection('users')
.doc(user.user.uid) // instead of user.uid
.get()
任何带有user.uid
的地方都将其更改为user.user.uid
。
【讨论】:
以上是关于TypeError:无法读取空颤动的属性“uid”的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取未定义的属性“用户”|但用户已定义