我正在为一个flutter应用程序构建一个配置文件页面,用户从他们的图库上传一张图片,然后图片被上传到FirebaseStorage。我遇到了一个问题,我收到了一个CastError,这是基于对空值使用空值检查操作符。问题变量是imageFile,但我已经使用If语句进行了检查,但我还是收到了这个错误。
下面是我的代码:
String name = '';
String email = '';
String? image = '';
File? imageFile;
String? imageUrl;
String? userNameInput = '';
//Upload image to Firebase
Future<String?> _uploadImageToFirebase() async {
if (imageFile == null) {
Fluttertoast.showToast(msg: 'Please upload an image');
}
**//This is where I'm getting the CastError**
String fileName = Path.basename(imageFile!.path);
var reference =
FirebaseStorage.instance.ref().child('profileImages/$fileName');
UploadTask uploadTask = reference.putFile(imageFile!);
TaskSnapshot taskSnapshot = await uploadTask.whenComplete(() => null);
await taskSnapshot.ref.getDownloadURL().then((value) {
imageUrl = value;
}).catchError((e) {
Fluttertoast.showToast(msg: e.toString());
});
FirebaseFirestore.instance
.collection('users')
.doc(FirebaseAuth.instance.currentUser!.uid)
.set({'userImage': imageUrl});
return imageUrl;
}
3条答案
按热度按时间yb3bgrhw1#
即使你选中了,你还是会继续执行函数,如果你想让函数在这里停止,你需要返回函数,就像
例如
qvtsj1bj2#
您正在检查,但控件正在进一步流动,因此
return
或在imageFile!.path
之前使用内联if条件溶液1:
溶液2:
txu3uszq3#
相反,我认为只需将其命名为
_uploadImageToFirebase()
,使用下面的内容就可以解决您的问题。