Flutter中如何加载并显示相机插件生成的本地图片?
解决Flutter加载本地图片的问题
嘿,这个坑我之前踩过!你现在的问题核心是用错了Image组件——Image.network()是专门用来加载网络上的HTTP/HTTPS图片的,完全不适合加载本地文件,这也是你报错的关键原因。
错误原因拆解
你写的new Image.network("file:///"+imagePath)会生成格式错误的URI:file:////data/user/0/com.example.myapp/app_flutter/picture2.jpg(多了一个斜杠),就算URI格式正确,Image.network也不支持解析本地文件协议的地址,所以必然会抛出No host specified的错误。
正确的加载方式
加载应用私有目录里的本地图片,应该用Image.file()组件,步骤如下:
- 先导入
dart:io库,因为要用到File类:
import 'dart:io';
- 直接用
Image.file传入对应路径的File对象:
Image.file(File("/data/user/0/com.example.myapp/app_flutter/picture2.jpg"))
如果你的路径存在变量imagePath里,就写成:
Image.file(File(imagePath))
额外注意事项
因为你的图片存在应用的私有目录app_flutter下,Android 10及以上系统也不需要申请额外的存储权限,应用默认拥有自己私有目录的读写权限,所以不用操心权限问题。
内容的提问来源于stack exchange,提问作者gpasse
相关产品推荐
相关产品推荐

