【问题标题】:How to move a photo/video to an album with Flutter on mobile (iOS and Android)?如何在移动设备(iOS 和 Android)上使用 Flutter 将照片/视频移动到相册?
【发布时间】:2020-01-18 20:32:04
【问题描述】:

在移动设备(iOS 和 Android)上使用 Flutter,如何将媒体移动到相册?

我尝试在 iOS 上结合 gallery_saverphoto_manager

  1. 我从Recents 阅读了一个媒体AssetEntity
  2. AssetEntity 文件保存在GallerySaver.saveImage 的相册下。此时Recents 两次显示相同的媒体,是有道理的。
  3. 尝试使用PhotoManager.editor.deleteWithIds 删除原始AssetEntity 文件,它显示一个本机弹出窗口,询问用户是否可以删除媒体。糟糕的用户体验...

有没有办法在不创建新文件的情况下更改AssetEntity 相册?

【问题讨论】:

  • 更新了我的答案,提供了需要完成的示例更改。
  • 如果我的答案有助于解决您的问题,将其标记为已接受会很棒。
  • @om-ha 我感谢您的努力,但这不是我正在寻找的完整解决方案,因为它没有解决 Android 问题。
  • 我明白了。我认为这是 iOS 特有的问题。

标签: android ios flutter android-gallery


【解决方案1】:

2020 年 4 月更新

值得庆幸的是,该库的作者最近对其进行了更新,以包括此答案中讨论的专辑删除功能。你可以看到他们的pull request。或者参考README中的方法调用removeAssetsInAlbum

问题

photo_manager 库正在使用PHAssetChangeRequest 的方法deleteAssets(_:)。你可以看到这个here。这将删除实际文件,而不仅仅是从相册中删除(更多信息请参见说明部分)

解决方案

解决方法是使用PHAssetCollectionChangeRequest的方法。取决于您的用例:

将资产从相册移动到另一个相册

从相册中删除资产

向相册添加资产

说明

删除资产和移除资产是有区别的。删除资产文件是通过PHAssetChangeRequest 完成的,它将永久删除资产文件及其从专辑中的引用。但是删除资产是通过PHAssetCollectionChangeRequest 完成的,它从专辑/s 中删除资产的引用(不是文件)而不删除文件本身。检查这个answer

怎么办?如何应用此解决方案?

此部分现已过时,但在无法使用 photo_manager 时保留用于其他用例,如果您想使用 photo_manager,请参阅此答案的顶部

您可以选择以下选项来解决您的问题:

  • 在库photo_manager中查找我上面解释的专辑方法,也许在那里? EDIT1 我只是在寻找PHAssetCollectionChangeRequest 的方法。 Currently 不支持/不使用。
  • 向库中添加问题并要求作者进行上述更改
  • 您自己通过 PR 或您自己的克隆版本将它们添加到库中 图书馆
  • 使用自己的平台渠道,自己处理。

示例更改:

目前photo_managerusesPHAssetChangeRequest的方法deleteAssets(_:)

[PHAssetChangeRequest deleteAssets:result];

这应该改为使用PHAssetCollectionChangeRequest的方法removeAssets(_:)

[PHAssetCollectionChangeRequest removeAssets:result];

【讨论】:

  • 是的,这是个问题。我是 photo_manager 的作者。将来我会添加新的 API 来支持 iOS 的从相册中移除资产而不是删除资产的方案。
  • 非常感谢@K.Cai!
  • 您好,photo_manager 在 0.5.1-dev.3 中支持只删除相册中的资产而不是删除资产的功能。 pub 发布版本将在几天内发布。 @om-ha
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2011-07-27
  • 1970-01-01
  • 2016-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多