【发布时间】:2021-03-14 09:46:02
【问题描述】:
您好,我正在尝试保存从图库或相机中挑选的图像。
Future<void> getImage({ImageSource source}) async {
_pickedImage = await ImagePicker().getImage(source: source);
if (_pickedImage != null) {
_pickedImageFile = File(_pickedImage.path);
}
}
选择图像后,它必须将图像更新到 Firebase 存储。
void _uploadImage(File image) async {
Reference storageReference = FirebaseStorage.instance
.ref()
.child('UserImage')
.child("UserImage/${user.uid}");
UploadTask uploadTask = storageReference.putFile(image);
//StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
uploadTask.then((newUrl) async {
newUrl.ref.getDownloadURL();
return imageUrl = newUrl.toString();
}).catchError((onError) {
print(onError);
});
}
问题是代码在 uploadTask.then((newUrl) 处中断,并且不允许将 downloadURL 作为字符串获取。然后它必须将图像路径更新到 firestore 集合。
void userDetailsUpdate() {
FirebaseFirestore.instance
.collection("Manufacturer-Accounts")
.doc(user.uid)
.update({
'Designation': designation.text,
'FirstName': firstName.text,
'LastName': lastName.text,
//'Email': user.email,
'Phone': phoneNumber.text,
'UserImage': imageUrl == null ? "" : imageUrl,
});
}
因为它没有获取图像 url,所以将值保存为“”。有没有办法做到这一点?我使用了 Firebase 存储 ^5.0.1
我的完整源代码在这里How can I add a new value to my text editcontroller in Text formfield?
【问题讨论】:
-
感谢克劳迪奥,但我已经尝试过这个,但对于 Firebase 存储的新更新,其中大多数已被弃用。谢谢你的时间
标签: flutter google-cloud-firestore firebase-storage imagepicker