未处理的异常:类型“XFile”不是类型转换中“PickedFile”类型的子类型

Posted

技术标签:

【中文标题】未处理的异常:类型“XFile”不是类型转换中“PickedFile”类型的子类型【英文标题】:Unhandled Exception: type 'XFile' is not a subtype of type 'PickedFile' in type cast 【发布时间】:2021-12-31 05:13:29 【问题描述】:

我正在尝试让用户能够在应用内更改他们的个人资料图片。 我可以拉起相机拍张照片。但是,图像没有被保存,在 Visual Studio 代码中我 收到以下错误:[ERROR:flutter/lib/ui/ui_dart_state.cc(209)]

这是我正在使用的变量:

PickedFile? _imageFile;
final ImagePicker _picker = ImagePicker();

这里是它们被使用的功能:

void takePhoto(ImageSource source) async 
    final pickedFile = await _picker.pickImage(source: source);
    setState(() 
      _imageFile = pickedFile as PickedFile;
    );
  

另外,我正在使用最新版本的图像选择器,即 image_picker: ^0.8.4+4。

【问题讨论】:

【参考方案1】:
 final ImagePicker _picker = ImagePicker();

  Future<File?> takePhoto(ImageSource source) async 
    final XFile? image = await _picker.pickImage(source: source);                  
    
    final File? file = File(image!.path);
    return file;
  

问题在于最初使用将其声明为 PickedFile。

【讨论】:

【参考方案2】:

将您的声明更改为:

XFile _imageFile; 

而不是pickfile。并删除as PickedFile中的案例

【讨论】:

【参考方案3】:

您可以尝试更改 PickedFile -> XFile 吗?因为您使用的是新版本。现在他们使用XFile 而不是PickedFile。 https://github.com/flutter/plugins/blob/55e246bfa0fd43ff16dc0041084449e606d0fb3c/packages/image_picker/image_picker/lib/image_picker.dart#L203

如果您想继续使用PickedFile,请更改为getImage

【讨论】:

以上是关于未处理的异常:类型“XFile”不是类型转换中“PickedFile”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

未处理的异常:类型“bool”不是类型转换中“String”类型的子类型

未处理的异常:类型“int”不是类型转换中“List<int>”类型的子类型

Flutter 未处理的异常:类型“Null”不是类型转换中“List<dynamic>”类型的子类型

未处理的异常:类型“List<Widget>”不是类型转换中“Iterable<MyWidget>”类型的子类型

未处理的异常:类型“ImmutableMap<String, dynamic>”不是类型转换中“List<dynamic>”类型的子类型

Flutter [错误:flutter/lib/ui/ui_dart_state.cc(177)] 未处理的异常:类型“int”不是类型转换中“String”类型的子类型