Как переместить фото / видео в альбом с Flutter на мобильном телефоне (iOS и Android)? - PullRequest
4 голосов
/ 18 января 2020

Как использовать Flutter на мобильном телефоне (iOS и Android), как я могу переместить мультимедиа в альбом?

Я пытался объединить gallery_saver и photo_manager на iOS:

  1. Я читаю носитель AssetEntity из Recents
  2. Сохранял файл AssetEntity в альбоме с GallerySaver.saveImage. В этот момент Recents показывал один и тот же носитель дважды, имеет смысл.
  3. Попытка удалить с PhotoManager.editor.deleteWithIds исходный файл AssetEntity, и это показало собственное всплывающее окно, спрашивающее пользователя, можно ли удалить СМИ. Плохой пользовательский опыт ...

Есть ли способ изменить альбом AssetEntity, не создавая новый файл?

1 Ответ

2 голосов
/ 24 января 2020

Обновление за апрель 2020 года

К счастью, автор библиотеки недавно обновил ее, добавив функцию удаления альбома, о которой говорилось в этом ответе. Вы можете увидеть их запрос на получение . Или обратитесь к вызову метода removeAssetsInAlbum в README

Проблема

photo_manager библиотека использует PHAssetChangeRequest метод deleteAssets (_:) . Вы можете увидеть это здесь . Это позволит удалить сам файл, а не просто удалить его из альбома (подробнее об этом в разделе «Объяснение»)

Решение

Решение заключается в использовании методов PHAssetCollectionChangeRequest . Зависит от вашего варианта использования:

Перемещение ресурсов из альбома в другой

Удаление ресурсы из альбома

Добавление ресурсов в альбом

Пояснение

Существует разница между удалением активов и удалением активов , Удаление файла актива выполняется с помощью PHAssetChangeRequest , который окончательно удаляет файл актива и его ссылки из альбомов. Но удаление ресурса выполняется через PHAssetCollectionChangeRequest , который удаляет ссылку на ресурс (не файл) из альбома (ов) без удаления самого файла. Отметьте ответ .

Что делать? Как можно применить это решение?

Этот раздел устарел, но сохраняется для других случаев использования, когда photo_manager не может быть использован, пожалуйста, обратитесь к верхней части этого ответа, если вы хотите использовать photo_manager

У вас есть следующие варианты, чтобы выбрать один из них, который решит вашу проблему:

  • Найдите методы альбома, которые я объяснил выше, в библиотеке photo_manager, может это там? EDIT1 Я только что искал PHAssetCollectionChangeRequest методы. В настоящее время не поддерживается / не используется.
  • Добавить проблему в библиотеку и попросить автора внести указанные изменения
  • Добавить их в библиотеку самостоятельно через PR или самостоятельно клонировать версия библиотеки
  • Используйте собственный канал платформы и работайте с ним самостоятельно.

Пример изменения:

В настоящее время photo_manager использует метод PHAssetChangeRequest deleteAssets (_:) :

[PHAssetChangeRequest deleteAssets:result];

Это должно измениться на использование метода PHAssetCollectionChangeRequest removeAssets (_:) :

[PHAssetCollectionChangeRequest removeAssets:result];
...