Flutter图像资源服务捕获异常:无法加载file_picker选择的本地asset资源
Flutter图像资源服务加载异常修复方案
核心问题
错误使用AssetImage加载本地文件系统路径的图片:AssetImage仅支持加载项目内置、且已在pubspec.yaml中声明的资源文件,你传入的/data/user/0/xxx/cache/路径属于应用运行时生成的本地缓存文件,不在项目内置资源范围内,因此触发加载断言错误。
错误代码特征
找到你项目中加载该路径图片的代码,大概率是以下错误写法:
// 错误1:直接把本地文件路径传给AssetImage Image(image: AssetImage("/data/user/0/com.Freedom.new_chat/cache/file_picker/Snapchat-1984491257.jpg")) // 错误2:用Image.asset简写加载本地路径 Image.asset("/data/user/0/com.Freedom.new_chat/cache/file_picker/Snapchat-1984491257.jpg")
修复方法
替换为Image.file构造方法加载本地文件即可,示例:
import 'dart:io'; // 传入对应路径的File对象 Image.file(File("/data/user/0/com.Freedom.new_chat/cache/file_picker/Snapchat-1984491257.jpg"))
场景延伸注意
- 若加载网络图片,使用
Image.network构造方法 - 若确实要加载项目内置资源,需先在
pubspec.yaml的flutter -> assets节点下声明对应资源路径,再使用AssetImage/Image.asset加载 - Android 13及以上版本读取公共存储的图片需要单独申请照片权限,iOS读取相册图片需要在
Info.plist中配置NSPhotoLibraryUsageDescription权限说明
内容的提问来源于stack exchange,提问作者Diyar Fakher
相关产品推荐
相关产品推荐

