firebase - 它总是返回 null setState()
问题描述
我在 Firebase 存储中上传图像并下载 URL 以便稍后检索图像。我添加了屏幕截图和更多代码。在 print(url) 工作正常并且将值 URL 传递给 storenewuser 函数时,它存储 null
This is the upload function:
Future uploadPic() async{
String filename = phoneNumber;
StorageReference ref = FirebaseStorage.instance.ref().child("User Profile Image").child(filename);
StorageUploadTask uploadTask = ref.putFile(_Image);
var downUrl = await (await uploadTask.onComplete).ref.getDownloadURL();
var url = downUrl.toString();
print(url);
if (!mounted) return;
setState(() {
ImageUrl=url;
});
}
SignUp and storing usersdata:
void Signup() async{
if(_key.currentState.validate()){
FirebaseAuth.instance.createUserWithEmailAndPassword(email: Email, password: Password).then((signedInUser){
uploadPic();
UserManagement().storeNewUser(Name,Email,phoneNumber,ImageUrl,RollNumber,Course,Semester,signedInUser.user, context);
}).catchError((e){
final snackBar = SnackBar(
content: Text(e.message),
);
Scaffold.of(context).showSnackBar(snackBar);
print(e);
});
}
else{
print("NULL");
}
}
storeNewUser(Name,Email/*,password*/,phonenumber,ImageUrl,rollnumber,course,sem,user,context){
Firestore.instance.collection('/users').document(user.uid).setData({
'Name' : Name,
'Email' : Email,
'Image Url' : ImageUrl,
'Phone Number' : phonenumber,
'Roll Number' : rollnumber,
'College' : 'Siliguri Institute of Technology',
'Course' : course,
'Semester' : sem
}).then((value){
Navigator.of(context).pop();
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context) => SignUpCompletePage()));
}).catchError((e){
final snackBar = SnackBar(
content: Text(e.message),
);
Scaffold.of(context).showSnackBar(snackBar);
});
}
数据库:
贮存:
解决方案
只是改变
uploadPic();
到
await uploadPic();
:)
推荐阅读
- php - 在 php+mysql 中使用带斜杠(查询)
- matlab - 将 n 个长度为 p 的向量乘以 n 个大小为 pxp 的矩阵
- mongoose - 摩卡在包含承诺的“之前”之后没有继续,只是挂起
- python - 打印给定序列中相同频率的所有氨基酸
- mysql - SQL 问题。在一张桌子上找到爱好相同的两个人
- corda - 匿名用户可以访问区块链吗?
- python-3.x - 在没有 reset_index 的情况下向 pandas 缓慢添加新列
- mysql - mySQL - 显示每天的第一个和最后一个日志
- jsf - 可拖动的输入组件 PrimeFaces
- android - 如何通过 Scanner 将数据添加到 TableLayout?