flutter如何保存图片到相册
在Flutter中如何将图片保存到手机相册?我尝试使用image_picker插件选择图片后,想将选中的图片保存到相册,但不知道具体该怎么实现。希望了解完整的代码实现步骤,包括必要的权限配置和插件使用方法。
2 回复
使用image_gallery_saver插件。先安装依赖,然后在代码中调用ImageGallerySaver.saveImage()方法,传入图片数据即可保存到相册。
更多关于flutter如何保存图片到相册的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中保存图片到相册,可以使用 image_gallery_saver 或 photo_manager 插件。以下是使用 image_gallery_saver 的步骤:
步骤1:添加依赖
在 pubspec.yaml 中添加:
dependencies:
image_gallery_saver: ^2.1.1
运行 flutter pub get 安装。
步骤2:配置权限
- Android:在
android/app/src/main/AndroidManifest.xml中添加:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> - iOS:在
ios/Runner/Info.plist中添加:<key>NSPhotoLibraryAddUsageDescription</key> <string>需要保存图片到相册</string>
步骤3:请求权限并保存图片
使用以下代码保存图片(支持网络图片、本地文件或Uint8List数据):
import 'package:image_gallery_saver/image_gallery_saver.dart';
import 'package:http/http.dart' as http;
// 保存网络图片示例
Future<void> saveNetworkImage() async {
// 请求存储权限(Android需处理动态权限,iOS通常不需要)
// 权限处理代码省略,可使用permission_handler插件
var response = await http.get(Uri.parse('图片URL'));
final result = await ImageGallerySaver.saveImage(
Uint8List.fromList(response.bodyBytes),
quality: 100,
name: 'my_image' // 可选文件名
);
print(result); // 输出保存结果
}
// 保存本地文件示例
Future<void> saveLocalImage() async {
ByteData bytes = await rootBundle.load('assets/image.png');
final result = await ImageGallerySaver.saveImage(
bytes.buffer.asUint8List(),
name: 'local_image'
);
print(result);
}
注意事项
- Android 权限:从 Android 10 开始,可能需要使用
Scoped Storage,image_gallery_saver已适配。 - iOS 配置:首次保存时会弹出权限请求对话框。
- 保存结果
result包含操作状态和文件路径信息。
使用此方法即可轻松将图片保存到设备相册。

