flutter如何在Android上保存图片到相册

我在Flutter中开发了一个功能,需要将生成的图片保存到Android设备的相册里。目前使用了image_gallery_saver插件,但保存后在图库里找不到图片,只能通过文件管理器查看。请问正确的保存方法是什么?是否需要额外配置权限或指定特定目录?

2 回复

在Flutter中将图片保存到Android相册,可以使用image_gallery_saver插件:

  1. 添加依赖:
dependencies:
  image_gallery_saver: ^2.1.1
  1. 使用示例:
import 'package:image_gallery_saver/image_gallery_saver.dart';

// 保存网络图片
await ImageGallerySaver.saveImage(
  Uint8List bytes, // 图片字节数据
  quality: 100,
  name: "my_image"
);

// 保存本地文件
await ImageGallerySaver.saveFile(filePath);
  1. 需要权限: 在android/app/src/main/AndroidManifest.xml添加:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  1. 注意:
  • Android 10+需要作用域存储权限
  • 建议使用permission_handler请求存储权限
  • 保存后会在相册中显示

简单易用,几行代码就能搞定!

更多关于flutter如何在Android上保存图片到相册的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在 Flutter 中,将图片保存到 Android 相册可以使用 image_gallery_saver 插件。以下是详细步骤:

  1. 添加依赖
    pubspec.yaml 文件中添加:

    dependencies:
      image_gallery_saver: ^2.1.1
    

    运行 flutter pub get 安装。

  2. 配置权限
    android/app/src/main/AndroidManifest.xml 中添加存储权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    
  3. 请求权限(Android 6.0+)
    使用 permission_handler 插件动态申请权限(需额外配置)。

  4. 保存图片
    使用以下代码保存图片(支持网络图片、本地文件或 Uint8List 数据):

    import 'package:image_gallery_saver/image_gallery_saver.dart';
    
    // 示例:保存网络图片
    void saveImage() async {
      var response = await Dio().get(
        "https://example.com/image.jpg",
        options: Options(responseType: ResponseType.bytes),
      );
      final result = await ImageGallerySaver.saveImage(
        Uint8List.fromList(response.data),
        quality: 100,
        name: "my_image",
      );
      print(result); // 输出保存路径
    }
    

注意事项

  • Android 10+ 需适配分区存储(Scoped Storage),image_gallery_saver 已兼容。
  • 如需保存文件路径,可使用 path_provider 获取临时目录。

通过以上步骤即可实现图片保存到相册功能。

回到顶部