【问题标题】:Flutter-iOS when apps update / recompile stored image is missing当应用程序更新/重新编译存储的图像时 Flutter-iOS 丢失
【发布时间】:2021-08-23 19:30:47
【问题描述】:

您好,请原谅我的英语,也是 Flutter iOS 上的新手,我在 iOS 上的 Flutter 上有一个应用程序,用户可以从他们的相机和图库中拍摄照片和视频我正在使用 image_picker 包,这没有问题,然后我保存它在它的应用程序文档目录上,我尝试遵循this 指南

我获取应用程序目录的代码是这样的

Directory _appDocDir;
_appDocDir = await getApplicationDocumentsDirectory();
final Directory _appMediaDir = Directory('${_appDocDir.path}/Pictures/');
return _appMediaDir;

添加了一个“图片”目录,这将给出一个路径

/Users/macman/Library/Developer/CoreSimulator/Devices/96060868-7E5C-4E15-9900-4D1D4B0B5ACE/data/Containers/Data/Application/BE7728A6-FF15-498E-91A0-A96A3DDE5B31/Documents/Pictures/D_IMG_0002.JPG  

从 iOS 模拟器中,我将其保存并放入数据库,在重新编译应用程序或进行构建更新后,不再找到预览图像/视频路径。我试图在这个构建上保存另一个图像并给出这个路径

/Users/macman/Library/Developer/CoreSimulator/Devices/96060868-7E5C-4E15-9900-4D1D4B0B5ACE/data/Containers/Data/Application/9D634D91-07B8-43BE-8646-2A55833322DF/Documents/Pictures/D_IMG_0005.JPG

我注意到之前的路径“/BE7728A6-FF15-498E-91A0-A96A3DDE5B31/”每次我重新编译应用程序或从 iOS 设备进行更新时都会更改,但找不到图像。对于能够保存图像的用户来说,最常见的做法是我做错了吗?

更新:我尝试更改我的逻辑以将保存的路径更改为仅基本名称 (D_IMAGE_0005.JPG),然后在预览图像时将调用当前应用程序文档目录,但这也不起作用。

谢谢

【问题讨论】:

    标签: ios flutter flutter-ios flutter-path


    【解决方案1】:

    您好,请不要将 getApplicationDocumentsDirectory() 给出的整个路径保存在您的记录中,而是只保存基本名称,并且每次预览/加载图像时调用

    getApplicationDocumentsDirectory() + 'Pictures/<basename>',
    

    每次在 iOS 上更新或重新编译应用程序时,appid 都会发生变化,这就是重新编译时无法加载路径的原因。

    【讨论】:

    • 我需要阅读更多内容以了解每个 iOS 版本中此路径更改背后的原因,只是为了说明这可能是解决问题的正确方法。与此同时,我可以说这确实解决了这个问题。仅作记录,它不仅发生在 OP 所述的 iOS 模拟器上。无论是在调试模式还是在发布模式下,它都会发生在设备上。谢谢!
    【解决方案2】:

    如果您的应用程序在沙盒环境中运行,iOS 会在您每次重新安装应用程序时删除文档目录。

    请参阅this stackoverflow question了解更多说明

    【讨论】:

      猜你喜欢
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      相关资源
      最近更新 更多