vision_gallery_saver 1.0.0
vision_gallery_saver: ^1.0.0 copied to clipboard
A Flutter plugin to save images and videos to the gallery on iOS and Android. Save images from widgets, network, and files.
vision_gallery_saver #
A Flutter plugin for saving images and videos to the gallery on iOS and Android platforms.
Features #
- 🖼️ Save images from widgets to gallery
- 🌐 Save images from network URLs
- 📹 Save videos from local files or URLs
- 🎨 Support for custom quality settings
- 📝 Custom file naming
- ✨ Support for PNG, JPG, GIF formats
- 📱 Works on both iOS and Android
Getting Started #
Add this to your package's pubspec.yaml
file:
dependencies:
vision_gallery_saver: ^1.0.0
Platform Setup #
iOS
Add the following keys to your Info.plist file:
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to save photos and videos to your gallery.</string>
Android
For Android 10 (API level 29) and above, add this to your AndroidManifest.xml:
<manifest ...>
<application
android:requestLegacyExternalStorage="true"
...>
</application>
</manifest>
Usage #
Save a Widget as Image #
// Using GlobalKey with RepaintBoundary
final GlobalKey _globalKey = GlobalKey();
// Inside your widget tree
RepaintBoundary(
key: _globalKey,
child: YourWidget(),
)
// Save the widget
RenderRepaintBoundary boundary = _globalKey.currentContext!.findRenderObject() as RenderRepaintBoundary;
ui.Image image = await boundary.toImage();
ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png);
if (byteData != null) {
final result = await VisionGallerySaver.saveImage(
byteData.buffer.asUint8List(),
quality: 100,
name: "my_image"
);
print(result);
}
Save Network Image #
var response = await Dio().get(
"https://example.com/image.jpg",
options: Options(responseType: ResponseType.bytes));
final result = await VisionGallerySaver.saveImage(
Uint8List.fromList(response.data),
quality: 100,
name: "network_image"
);
Save Video File #
final result = await VisionGallerySaver.saveFile(
"/path/to/video.mp4",
name: "my_video"
);
Example App #
Check out the example folder for a complete demo app showcasing all features.
API Reference #
VisionGallerySaver.saveImage() #
static Future<Map<dynamic, dynamic>> saveImage(
Uint8List imageBytes, {
int quality = 80,
String? name,
bool isReturnImagePathOfIOS = false
})
VisionGallerySaver.saveFile() #
static Future<Map<dynamic, dynamic>> saveFile(
String file, {
String? name,
bool isReturnPathOfIOS = false
})
Return Value Format #
Methods return a Map with the following structure:
{
"isSuccess": true/false,
"filePath": "path/to/saved/file", // Optional
"errorMessage": "error message" // If isSuccess is false
}
Contributing #
Contributions are welcome! Please read our contributing guidelines to get started.
License #
This project is licensed under the MIT License - see the LICENSE file for details.