Flutter使用ImagePicker选图后无法显示,报XFile转File类型错误
问题根源
你使用的image_picker: ^0.8.4+2属于0.8.0之后的版本,官方将pickImage方法的返回值从File调整为了XFile类型,你直接将返回值强转为File属于非法类型转换,所以抛出对应异常。
同时你的代码存在隐藏问题:CircleAvatar的backgroundImage参数要求传入ImageProvider类型,你直接传入Image.file()组件会触发类型不匹配错误。
解决方案
1. 调整选图逻辑的类型转换
修改getImage方法,将返回的XFile通过路径转为File类型:
Future getImage() async { // 先接收官方返回的XFile类型 XFile? pickedFile = await imagePicker.pickImage(source: ImageSource.gallery); if (pickedFile != null) { setState(() { // 通过XFile的path属性构造File对象 image = File(pickedFile.path); }); } }
2. 修正CircleAvatar的图片赋值逻辑
把Image.file(image)替换为FileImage(image),符合backgroundImage的参数类型要求:
CircleAvatar( radius: 60, backgroundColor: Colors.white, backgroundImage: image != null ? FileImage(image) : NetworkImage("https://cdn-icons-png.flaticon.com/512/1177/1177568.png") as ImageProvider, )
内容的提问来源于stack exchange,提问作者213Lord
相关产品推荐
相关产品推荐

