如何使用Flutter将图像保存到照片库?

时间:2018-04-23 18:29:04

标签: dart gallery flutter photo

我的flutter应用程序使用camera包来拍照,我将其保存到应用程序的数据目录(从path_providergetApplicationDocumentsDirectory()函数获取)。

如何将此图像文件保存到手机照片库中?我注意到image_picker包允许从库中读取 ,但我该怎么写呢?

5 个答案:

答案 0 :(得分:6)

不幸的是,flutter目前没有公开该功能。它似乎确实是插件的候选者。

如果你有足够的动力,可以使用platform channels从颤动到原生的Android(和iOS)代码进行通信,从中可以完全访问图库。如果你把它变成一个插件并发布它,可以获得奖励积分!

答案 1 :(得分:3)

我做了插件。如果您愿意,请尝试一下。

https://pub.dartlang.org/packages/image_downloader#-readme-tab-

更新

我将解释如何使用。

将此添加到您程序包的pubspec.yaml文件中:

dependencies:
  image_downloader: ^0.9.0

然后,为每个设备指定权限。

只需输入以下内容,图像将被保存。

ImageDownloader.downloadImage(url);

答案 2 :(得分:2)

有一个支持此功能的插件。

https://pub.dev/packages/image_gallery_saver

我已经对其进行了测试,并且工作正常。

答案 3 :(得分:2)

https://pub.dev/packages/gallery_saver

此插件将图像和视频保存到图库/照片中。

您只需为其提供从Camera获得的临时文件的路径(甚至也可以使用网络url):

GallerySaver.saveVideo(recordedVideo.path);
GallerySaver.saveImage(recordedImage.path);

答案 4 :(得分:0)

我一直在寻找这个答案,但幸运的是,我能够使用此代码将文件保存到图库:

ByteData byteData = await rootBundle.load('assets/images/example.png');
File file = await File('/storage/emulated/0/Android/media/<your app package>/<App title/folder>/example.png').create(recursive: true);
await MediaStore.saveImage(byteData.buffer.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));

这会将您的图像保存到设备和设备库中。

这只适用于安卓

谢谢。