Last updated:
0 purchases
saver gallery
saver_gallery #
We use the image_picker plugin to select images from the Android and iOS image library, but it can't save images to the gallery. This plugin can provide this feature.
Usage #
To use this plugin, add saver_gallery as a dependency in your pubspec.yaml file. For example:
dependencies:
saver_gallery: ^3.0.6
copied to clipboard
iOS #
Your project need create with swift.
Add the following keys to your Info.plist file, located in
<key>NSPhotoLibraryAddUsageDescription</key>
<string>photo</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>photo</string>
copied to clipboard
Android #
You need to ask for storage permission to save an image to the gallery. You can handle the storage permission using flutter_permission_handler.
AndroidManifest.xml file need to add the following permission:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:ignore="ScopedStorage" />
<!-- if androidExistNotSave = true -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
copied to clipboard
Example #
Access permission(use permission_handler)
bool androidExistNotSave = false;
bool isGranted;
if (Platform.isAndroid) {
final deviceInfoPlugin = DeviceInfoPlugin();
final deviceInfo = await deviceInfoPlugin.androidInfo;
final sdkInt = deviceInfo.version.sdkInt;
/// [androidExistNotSave]
/// On Android, if true, the save path already exists, it is not saved. Otherwise, it is saved
/// 在安卓平台上,如果是true,则保存路径已存在就不在保存,否则保存
/// is androidExistNotSave = true,write as follows:
if (androidExistNotSave) {
isGranted = await (sdkInt > 33 ? Permission.photos : Permission.storage).request().isGranted;
} else {
/// is androidExistNotSave = false,write as follows:
isGranted = sdkInt < 29 ? await Permission.storage.request().isGranted : true;
}
} else {
isGranted = await Permission.photosAddOnly.request().isGranted;
}
copied to clipboard
Saving an image from the internet(ig: png/jpg/gif/others), quality and name is option
_saveGif() async {
var response = await Dio().get(
"https://hyjdoc.oss-cn-beijing.aliyuncs.com/hyj-doc-flutter-demo-run.gif",
options: Options(responseType: ResponseType.bytes));
String picturesPath = "test_jpg.gif";
debugPrint(picturesPath);
final result = await SaverGallery.saveImage(
Uint8List.fromList(response.data),
quality: 60,
name: picturesPath,
androidRelativePath: "Pictures/appName/xx",
androidExistNotSave: false,
);
debugPrint(result.toString());
_toastInfo("$result");
}
copied to clipboard
Saving file(ig: video/others) from the internet
_saveVideo() async {
var appDocDir = await getTemporaryDirectory();
String savePath = appDocDir.path + "/temp.mp4";
await Dio().download("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4", savePath);
final result = await SaverGallery.saveFile(file: savePath,androidExistNotSave: true, name: '123.mp4',androidRelativePath: "Movies");
print(result);
}
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.