微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter 如何在资产文件夹上共享图像?

如何解决Flutter 如何在资产文件夹上共享图像?

使用此代码,我不断收到错误“ENOENT(没有这样的文件或目录),空,空,空)”。如何共享资产文件夹中的文件

Directory directory = await getApplicationDocumentsDirectory();
    Share.shareFiles(['${directory.path}/baws.png'],text: 'Great picture');

解决方法

您面临的问题来自方法 getApplicationDocumentsDirectory(); 它没有为您提供正确的路径。

它为您提供了应用商店数据所在隐藏目录的路径。

您可能希望使用以下内容更新您的代码:

// old code
Share.shareFiles(['${directory.path}/baws.png'],text: 'Great picture');


// new one
Share.shareFiles(['assets/images/baws.png'],text: 'Great picture');

不要忘记将您的 'baws.png' 放在名为 assets 的文件夹和名为 image 的子文件夹中以匹配示例,并在您的 pubspec.yaml

文件夹 assets 需要位于项目目录的根目录下。

您可以在 official documentation here.

上找到更多信息 ,

首先以字节为单位获取图像并复制到临时文件。

      final ByteData bytes = await rootBundle.load('assets/image.jpg');
      final Uint8List list = bytes.buffer.asUint8List();

      final tempDir = await getTemporaryDirectory();
      final file = await new File('${tempDir.path}/image.jpg').create();
      file.writeAsBytesSync(list);

然后用share包来共享,应该可以了;

Share.shareFiles(['${file.path}'],text: 'Great picture');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。