如何解决文件未从 DocumentDirectory Path Flutter 加载
我是 Flutter 的新手。
我构建了一个简单的演示应用程序,用户可以在其中填写简单的表单,一旦用户按下按钮,这些数据就会保存到 SQLite DB 中。
只有 3 个内容。标题、图像路径(图像保存到 DocumentDirectory)、位置详细信息。
添加屏幕
列表屏幕
以下是我将图像复制到路径的代码。
Future<void> _takePicture() async {
final picker = ImagePicker();
final pickedFile = await picker.getImage(
source: ImageSource.camera,maxWidth: 600,);
if (pickedFile == null) {
return;
}
setState(() {
_storedImage = File(pickedFile.path);
});
final appDir = await syspaths.getApplicationDocumentsDirectory();
String relativePath = '/' +
DateTime.now().millisecondsSinceEpoch.toString() +
path.basename(pickedFile.path);
String newPath = '${appDir.path}' + relativePath;
final savedImage = await File(pickedFile.path).copy('$newPath');
widget.onSelectImage(savedImage);
}
商品代码
child: Card(
elevation: 5,child: ListTile(
leading: CircleAvatar(
backgroundImage: FileImage(greatPlaces.items[index].image),),title: Text(greatPlaces.items[index].title),subtitle: Text(
greatPlaces.items[index].location.address),onTap: () {
print(greatPlaces.items[index].image);
//Go to detail page...
},)
问题 ==> 当我添加新地点并查看添加的地点列表时,图像加载正常,但是当我停止并重新运行项目时,出现以下错误并且图像未加载。
错误
======== 图像资源服务捕获的异常 ============================ 以下 FileSystemException 是 抛出解析图像编解码器:无法打开文件,路径 = '/var/mobile/Containers/Data/Application/607FB621-ABDA-472F-8B7A-D9B1BEC4A15D/Documents/1616508266743image_picker_34814E6F-218C-48F6-BE36-C401070jpg7040jpg7040jpg7160 (OS Error: No such file or directory,errno = 2) 当异常 被抛出,这是堆栈 #0 _File.open。 (dart:io/file_impl.dart:356:9)(从 dart:async 中删除了 13 帧)路径: /var/mobile/Containers/Data/Application/607FB621-ABDA-472F-8B7A-D9B1BEC4A15D/Documents/1616508266743image_picker_34814E6F-218C-=====0=5=0-BE36-C4D410000000000 ================================================= ===================
我下载了应用程序容器并确认图像存在于同一位置。 greatPlaces.items[index].image
返回文件
注意: ==> 相同的代码在 Android 设备中运行良好。
如果有人帮助我,这将非常有帮助。谢谢
解决方法
每次应用更新后,iOS 上的文档目录路径都会发生变化。因此,不能存储存储在此目录中的文件的绝对路径。相反,每次访问文件时,都需要存储相对路径,然后将它们与 getApplicationDocumentsDirectory() 返回的值连接起来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。