Flutter图片上传报错type '_File' is not a subtype of type 'File'如何解决?
问题解决方法
- 第一步:排查导包冲突
检查当前报错文件的头部导入,确认是否同时导入了dart:html和dart:io。dart:html也暴露了同名的File类,和dart:io的File完全属于不同类型,如果你声明变量用的是html包的File,运行时拿到的io包的_File实例自然会类型不匹配。如果不需要web相关能力,直接删除dart:html的导入即可;如果需要混用,可以给导入加别名:
import 'dart:io' as io; import 'dart:html' as html; // 声明变量时明确用io包的File io.File? selectedFile;
- 第二步:用路径重新生成File实例
Dart中dart:io的File本身是抽象类,运行时的实际实现类就是私有类_File,正常场景下_File是可以直接赋值给File类型变量的。如果强转失效,直接用返回对象的path参数重新构造File即可,不需要做类型转换:
final pickedFile = await MediaPicker.pickMediaFromLocal(); if (pickedFile != null) { File targetFile = File(pickedFile.path); // 后续直接使用targetFile即可 }
- 第三步:检查返回值类型声明
确认当前调用MediaPicker.pickMediaFromLocal的位置,有没有指定返回值类型,如果是用dynamic接收返回值,也可能触发隐式类型转换的异常,显式声明接收类型为File?即可。
相关截图



内容的提问来源于stack exchange,提问作者Hoangdz
相关产品推荐
相关产品推荐

