gal 2.1.4 copy "gal: ^2.1.4" to clipboard
gal: ^2.1.4 copied to clipboard

Flutter Plugin for Saving Image/Video to the Photo Gallery | How to Save Image/Video to the Photo Gallery in Flutter

Logo

Gal

Dart3 plugin for saving image or video to photos gallery
pub.dev Β»

Since pub points Maintainability CodeFactor Codacy Badge CI pub package

Please LIKEπŸ‘ and STAR⭐️ to support our volunteer efforts. #

Android iOS macOS Windows
Support SDK 21+ 11+ 11+ 10+
iOS Android
Example ios android

✨ Features #

  • Open gallery
  • Save video
  • Save image
  • Save to album
  • Save with metadata
  • Handle permission
  • Handle errors
  • Lots of docs and wiki

πŸš€ Get started #

Add dependency #

You can use the command to add gal as a dependency with the latest stable version:

$ flutter pub add gal

iOS #

Add the following keys to the ios/Runner/Info.plist:

  • <key>NSPhotoLibraryAddUsageDescription</key> Required
  • <key>NSPhotoLibraryUsageDescription</key> Required for ios < 14 or saving to album

You can copy from Info.plist in example.

Android #

Add the following keys to the android/app/src/main/AndroidManifest.xml:

  • <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" /> Required for API <= 29
  • android:requestLegacyExternalStorage="true" Required for saving to the album in API 29

You can copy from AndroidManifest.xml from example.

πŸ”΄ Warning: Android emulators with API < 29 require SD card setup. Real devices don't.

macOS #

Add the following keys to the macos/Runner/Info.plist:

  • <key>NSPhotoLibraryAddUsageDescription</key> Required
  • <key>NSPhotoLibraryUsageDescription</key> Required for saving to album

You can copy from Info.plist in example.

πŸ”΄ Warning: Flutter has fatal crash issue for loading info.plist on macOS now.

Windows #

Update Visual Studio to the latest version for using C++ 20.

βœ… Usage #

Save from local #

// Save Image (Supports two ways)
await Gal.putImage('$filePath');
await Gal.putImageBytes('$uint8List');

// Save Video
await Gal.putVideo('$filePath');

// Save to album
await Gal.putImage('$filePath', album: '$album')
...

Download from the Internet #

$ flutter pub add dio
// Download Image
final imagePath = '${Directory.systemTemp.path}/image.jpg';
await Dio().download('$url',imagePath);
await Gal.putImage(imagePath);

// Download Video
final videoPath = '${Directory.systemTemp.path}/video.mp4';
await Dio().download('$url',videoPath);
await Gal.putVideo(videoPath);

Save from Camera #

$ flutter pub add image_picker
// Shot and Save
final image = await ImagePicker.pickImage(source: ImageSource.camera);
await Gal.putImage(image.path);
$ flutter pub add camera
// Record and Save
...
final video = await controller.stopVideoRecording();
await Gal.putVideo(video.path);

Handle Permission #

// Check Permission
await Gal.hasAccess();

// Request Permission
await Gal.requestAccess();

Handle Errors #

// Save Image with try-catch
try {
  await Gal.putImage('$filePath');
} on GalException catch (e) {
  log(e.type.message);
}

// Exception Type
enum GalExceptionType {
  accessDenied,
  notEnoughSpace,
  notSupportedFormat,
  unexpected;

  String get message => switch (this) {
        accessDenied => 'You do not have permission to access the gallery app.',
        notEnoughSpace => 'Not enough space for storage.',
        notSupportedFormat => 'Unsupported file formats.',
        unexpected => 'An unexpected error has occurred.',
      };
}

πŸ“ Ducuments #

If you write an article about Gal, let us know in discussion and we will post the URL of the article in the wiki or readme 🀝

πŸ’š Trusted by huge projects #

Although Gal has only been released for a short time, it is already trusted by huge projects.

293
likes
0
pub points
98%
popularity

Publisher

verified publishermidoridesign.studio

Flutter Plugin for Saving Image/Video to the Photo Gallery | How to Save Image/Video to the Photo Gallery in Flutter

Homepage
Repository (GitHub)
View/report issues

Topics

#gallery #video #image #photos #util

Documentation

Documentation

Funding

Consider supporting this project:

github.com

License

unknown (license)

Dependencies

flutter

More

Packages that depend on gal