Flutter 如何在资产文件夹中共享图像?
Flutter how to share image on assets folder?
使用此代码,我不断收到错误“ENOENT(没有这样的文件或目录),null,null,null)”。如何共享资产文件夹中的文件?
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
的子文件夹以匹配示例,并在您的 [=14= 中声明它]
文件夹 assets
需要位于项目目录的根目录下。
上找到更多信息
首先将图像作为字节获取并复制到临时文件。
final bytes = await rootBundle.load('assets/image.jpg');
final list = bytes.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final file = await File('${tempDir.path}/image.jpg').create();
file.writeAsBytesSync(list);
然后用share包分享,应该可以了;
Share.shareFiles(['${file.path}'], text: 'Great picture');
// import 'package:flutter/services.dart';
// import 'package:path_provider/path_provider.dart';
// import 'package:share_plus/share_plus.dart';
// import 'dart:io';
// share_plus: any
// path_provider: any
shareFile(){
ByteData imagebyte = await rootBundle
.load('assets/images/kissing_image_real.png');
final temp = await getTemporaryDirectory();
final path = '${temp.path}/image1.jpg';
File(path).writeAsBytesSync(imagebyte.buffer.asUint8List());
await Share.shareFiles([path], text: 'Image Shared');
}
使用此代码,我不断收到错误“ENOENT(没有这样的文件或目录),null,null,null)”。如何共享资产文件夹中的文件?
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
的子文件夹以匹配示例,并在您的 [=14= 中声明它]
文件夹 assets
需要位于项目目录的根目录下。
首先将图像作为字节获取并复制到临时文件。
final bytes = await rootBundle.load('assets/image.jpg');
final list = bytes.buffer.asUint8List();
final tempDir = await getTemporaryDirectory();
final file = await File('${tempDir.path}/image.jpg').create();
file.writeAsBytesSync(list);
然后用share包分享,应该可以了;
Share.shareFiles(['${file.path}'], text: 'Great picture');
// import 'package:flutter/services.dart';
// import 'package:path_provider/path_provider.dart';
// import 'package:share_plus/share_plus.dart';
// import 'dart:io';
// share_plus: any
// path_provider: any
shareFile(){
ByteData imagebyte = await rootBundle
.load('assets/images/kissing_image_real.png');
final temp = await getTemporaryDirectory();
final path = '${temp.path}/image1.jpg';
File(path).writeAsBytesSync(imagebyte.buffer.asUint8List());
await Share.shareFiles([path], text: 'Image Shared');
}