Imagepicker'XFile'不是类型转换和Firebase存储图像上传错误中'File'类型的子类型
Posted
技术标签:
【中文标题】Imagepicker\'XFile\'不是类型转换和Firebase存储图像上传错误中\'File\'类型的子类型【英文标题】:Imagepicker 'XFile' is not a subtype of type 'File' in type cast and Firebase Storage image upload errorImagepicker'XFile'不是类型转换和Firebase存储图像上传错误中'File'类型的子类型 【发布时间】:2021-11-20 20:29:22 【问题描述】:我正在尝试使用 imagepicker 从图库中选择图像并将其上传到 firebasestorage。 当应用程序运行时,它给出错误“无法打开文件,路径 = ''(操作系统错误:错误地址,errno = 14)和未处理的异常:类型'XFile'不是类型转换中类型'File'的子类型' .
GestureDetector(
onTap: () => pickPhotoFromGallery(),
child: CircleAvatar(
radius: 70,
// ignore: unnecessary_null_comparison
child: (_imageFile != null)
? Image.file(_imageFile)
: Image.asset('assets/images/icon.png'),
),
),
Future pickPhotoFromGallery() async
File imageFile =
(await _imagePicker.pickImage(source: ImageSource.gallery)) as File;
setState(()
_imageFile = imageFile;
);
当我单击保存按钮时,它显示“断言失败:第 127 行 pos 12: 'file.absolute.existsSync()': is not true." 我遇到了错误。
onPressed: uploading ? null : () => uploadImageAndSaveItemInfo(),
uploadImageAndSaveItemInfo() async
setState(()
uploading = true;
);
String imageDownloadUrl = await uploadItemImage(_imageFile);
saveItemInfo(imageDownloadUrl);
saveItemInfoCategory(imageDownloadUrl);
Future<String> uploadItemImage(File mFileImage) async
final Reference storageReference =
FirebaseStorage.instance.ref().child("thumbnail");
UploadTask uploadTask = storageReference
.child(_idController.text.trim() + ".jpg")
.putFile(mFileImage);
String downloadUrl = await uploadTask.snapshot.ref.getDownloadURL();
return downloadUrl;
Imagepicker 在旧版本中工作,在最新版本中出现错误。
【问题讨论】:
【参考方案1】:原因是图像选择器已升级为使用 Xfile 而不是 File。要将 Xfile 转换为 File,您可以使用:
File file = File( _imageFile.path );
您还需要添加import 'dart:io'
。
【讨论】:
以上是关于Imagepicker'XFile'不是类型转换和Firebase存储图像上传错误中'File'类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章
将 `std::floor()` 和 `std::ceil()` 转换为整数类型是不是总是给出正确的结果?
类型“List<Object?>”不是类型转换中“List<>”类型的子类型
数据类型的转换。 如何将List集合转换成String类型。不是String类型的数组,是String类型。