Plugin Flutter que permite salvar imagens na galeria nativa do Android e iOS. Você pode salvá-las no álbum padrão ou em um álbum nomeado de sua escolha.
Orientação gerada a partir de informações públicas. Apenas para referência.
Um plugin Flutter que permite salvar imagens na galeria nativa dos dispositivos Android e iOS. Ele oferece suporte para salvar em um álbum padrão ou em um álbum personalizado de sua escolha, garantindo integração perfeita com os sistemas de armazenamento de fotos específicos do dispositivo. O plugin simplifica a persistência de mídia para aplicativos que geram ou modificam imagens, proporcionando compatibilidade entre plataformas com configuração mínima. Ideal para aplicativos que exigem funcionalidade de exportação de imagens amigável ao usuário.
Casos de uso
Salvando imagens geradas de um aplicativo
Exportar fotos editadas para a galeria do usuário
Criando álbuns personalizados para armazenamento organizado de imagens
Compartilhando visuais criados pelo aplicativo com os usuários
Automatizando o backup de imagens na galeria nativa
Principais recursos
Suporte multiplataforma (Android e iOS)
Salvar para álbuns padrão ou nomeados
API simples para salvamento de imagem
Integração nativa da galeria
Configuração mínima necessária
Indicado para
aplicativos de edição de imagem
Aplicativos de compartilhamento de fotos
Aplicativos gerando conteúdo visual
Ferramentas de mídia voltadas para o usuário
Desenvolvedores que precisam de acesso à galeria
Considerações
Requer permissões apropriadas em ambos os plataformas
Limitado a arquivos de imagem apenas
Sem suporte para vídeo ou outros tipos de mídia
O comportamento específico da plataforma pode variar
Manipulação manual de solicitações de permissão necessária
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
save_in_gallery
Flutter plugin that allows you to save images in native gallery in both Android and iOS. You can either save them in default album or in named album of your choice.
Installation
For installation details see Installing tab on this page.
Configuration
iOS
To use this plugin in iOS you must add 2 new records to configuration file info.plist located in ios/Runner directory. To do so, open iOS project in Xcode by running
open ios/Runner.xcworkspace
then right-click on info.plist file in project navigator and click open as > source code. Then add following 2 records at the end of <dict> object:
<key>NSPhotoLibraryAddUsageDescription</key><string>write</string>
Where write should be reason why your app requires write access to user's gallery. This is necessary to save images in gallery.
<key>NSPhotoLibraryUsageDescription</key><string>read</string>
Where read should be reason why your app requires read access to user's gallery. This is necessary to create and use named albums in gallery.
Be aware that app will ask user's permission to read/write gallery access using standard iOS alerts when you will use methods provided by this plugin. These alerts' appearance can not be changed.
If user declines access, these alerts can not be shown again, instead you must use custom controls to redirect user to Settings app, so they can grant access rights themselves. Methods provided by this plugin will not work unless user provides proper access rights.
Android
This plugin should work out-of-the-box and does not require additional configuration.
Be aware that app will ask user's permission to WRITE_EXTERNAL_STORAGE using standard Android alerts when you will use methods provided by this plugin. These alerts' appearance can not be changed.
If user declines access, these alerts can not be shown again, instead you must use custom controls to redirect user to Settings app, so they can grant access rights themselves. Methods provided by this plugin will not work unless user provides proper access rights.
Examples
Save multiple images from app's assets to default gallery
import'package:save_in_gallery/save_in_gallery.dart';
final _imageSaver = ImageSaver();
Future<void> saveAssetImage() async {
// 1final urls = [
"assets/image1.jpg",
"assets/image2.jpg",
"assets/image3.jpg",
];
// 2 List<Uint8List> bytesList = [];
for (final url in urls) {
final bytes = await rootBundle.load(url);
bytesList.add(bytes.buffer.asUint8List());
}
// 3final res = await _imageSaver.saveImages(
imageBytes: bytesList
);
// 4
}
Prepare list of asset URLs;
Load each image, extract byte data, and map to Uint8List type;
Invoke plugin method to save loaded images;
res variable will hold result of saving operation. If it's true, then everything went as expected and images have been successfully saved. Otherwise something went wrong along the way. Use this variable to provide feedback to user.
Fetch image from web and save it to a named album in gallery
Create NetworkImage object with your URL and load it's configuration;
Extract byte data from image;
Invoke plugin method to save fetched image in custom album named dir_name;
res variable will hold result of saving operation. If it's true, then everything went as expected and image have been successfully saved. Otherwise something went wrong along the way. Use this variable to provide feedback to user.