[英]How to get a user by Id and delete it after from firebase auth database
[英]How to get user id from firebase auth as string?
我正在嘗試使用經過身份驗證的用戶ID作為文檔ID將數據插入到Firestore中,但是我從參數中得到了null。
請看一下我的腳本。
void didChangeDependencies() {
uid = '';
super.didChangeDependencies();
}
Future _fetchUID() async {
var auth = AuthProvider.of(context).auth;
return await auth.getCurrentUser().then((user) => _uid = user.uid);
}
_validateAndSubmit() async {
setState(() {
_errorMessage = '';
_isLoading = true;
});
if (_validateAndSave()) {
try {
_fetchUID();
await Report.create(_uid, _suspectName, _plateNumber, _civilizationId,
_drivingLicenseId, _clause, _description);
return Navigator.of(context).pop();
} catch (e) {
setState(() {
_isLoading = false;
_errorMessage = e.message;
});
print(_errorMessage);
throw Exception(e);
}
}
}
在下面的此方法中,您可以看到我已經嘗試設置_uid
,但是仍然無法獲得_uid
值。
Future _fetchUID() async {
var auth = AuthProvider.of(context).auth;
return await auth.getCurrentUser().then((user) => _uid = user.uid);
}
這就是getCurrentUser()
方法的樣子。
Future<FirebaseUser> getCurrentUser() async {
FirebaseUser user = await _firebaseAuth.currentUser();
return user;
}
我做錯了嗎?
首先,將Future.then
語法和async
await
語法混合在一起。
您可能應該這樣寫方法:
void _fetchUID() async {
var auth = AuthProvider.of(context).auth;
_uid = (await auth.getCurrentUser()).uid;
}
如果_uid
仍然是null
打完電話后對您_fetchUID
這種方式,那么你根本就沒有簽署,這意味着沒有FirebaseUser
,你首先需要登錄。
在_validateAndSubmit
方法中,您還首先需要等待 _fetchUID
調用,否則它將在分配值之前通過_uid
。
...
try {
await _fetchUID();
await Report.create(_uid, ..);
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.