Android应用使用Windows路径加载图片报错:无法获取文件长度
Android端加载图片路径错误的解决办法
问题根源
你直接用Windows本地绝对路径C:/Users/egore/Desktop/KR/Shop/server/static/${product.image}在Android设备上加载图片,这完全行不通——Android系统无法访问电脑本地的文件目录,和你加的存储权限无关。
可行解决方案
把图片放到Flutter项目资源目录
- 在项目根目录新建
assets/images文件夹,将图片移入 - 修改
pubspec.yaml配置资源:assets: - assets/images/ - 替换加载代码:
child: Image.asset('assets/images/${product.image}')
- 在项目根目录新建
将图片传到Android设备外部存储
- 把图片传到Android设备的外部存储目录(比如Download文件夹)
- 用
path_provider包获取外部存储路径,代码示例:import 'package:path_provider/path_provider.dart'; Future<String> getExternalPath() async { final dir = await getExternalStorageDirectory(); return dir!.path; } // 加载图片时调用 final storagePath = await getExternalPath(); child: Image(image: FileImage(File('$storagePath/${product.image}'))) - 注意:Android 13+需要申请
READ_MEDIA_IMAGES权限,在AndroidManifest.xml中替换原有权限:<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
通过网络加载服务器图片
如果图片存放在你电脑上的服务器里,直接用网络图片组件加载:child: Image.network('http://你的服务器IP地址/static/${product.image}')
内容的提问来源于stack exchange,提问作者Egor
相关产品推荐
相关产品推荐

