如何将ByteData(图像)保存到Flutter中的Download目录中?

时间:2020-11-01 05:53:14

标签: flutter

我正在尝试将从画布生成的 ByteData 图片保存到设备的 download 文件夹中。但是,我只能使用下面的代码将其保存到我的应用程序android / data /目录中。

Future<void> saveImage(
  String fileName,
    ByteData image,
  ) async {
    final directoryName = "Generated";
    
    Directory directory = await getExternalStorageDirectory();
    String path = directory.path;
    await Directory('$path/$directoryName').create(recursive: true);
    
    File('$path/$directoryName/$fileName.png').writeAsBytesSync(image.buffer.asInt8List());
}

但是,用户进入该深层目录只是为了获取图像并不方便,因此我想将其保存到Download目录中,但我不知道如何。我尝试了几种方法,但我一直收到权限错误。例如,下面使用此代码(downloads_path_provider)...

Directory directory = await DownloadsPathProvider.downloadsDirectory;
String path = directory.path;  

File('$path/$fileName.png').writeAsBytesSync(image.buffer.asInt8List());

PS。如果有一种方法可以将其保存在手机图库中显示的地方,那就更好了

1 个答案:

答案 0 :(得分:1)

您可以使用pub.dev上的此包将图像保存到图库:'gallery_saver':https://pub.dev/packages/gallery_saver