在这里我想
share
image
我通过API
。我为此功能尝试了不同的方法,但我没有得到任何解决方案,因为每个解决方案都只有一张图像。
确切地说,我从
Url
获得多张图片,然后在下一页打开任何特定的 image
。所以,我想share
我在另一个页面打开的那个image
。
我试过
sharing image
,但我做不到。每当我尝试 share
那个 image
,Image
url
share
与 sharing
选项在 device
但我想要 share
image
不是 URl
的 image
我怎么能完成这个?
你必须这样下载图片:
http.Response response = await http.get(url);
然后像这样使用下载的图像在设备上创建一个图像(读写文件):
final directory = await getTemporaryDirectory();
final path = directory.path;
final file = File('$path/image.png');
file.writeAsBytes(response.bodyBytes);
getTemporaryDirectory() 在插件path_provider 中。现在,您将要分享的图片临时存储为“image.png”,您可以使用share_plus 插件分享图片,如下所示:
Share.shareFiles(['$path/image.png']);
感谢@abdulrazak,首先,您必须在临时路径中下载图像,然后您可以根据需要共享图像。使用 Dio 下载图片 & share_plus 分享
void _shareNetworkImage(String url) async {
Directory tempDir = await getTemporaryDirectory();
final path = '${tempDir.path}/test.jpeg';
await Dio().download(url, path);
Share.shareFiles([path]);
}
您可以使用esys_flutter_share插件。
安装它,然后获取依赖项:
dependencies:
esys_flutter_share: ^1.0.2
将插件导入您的代码:
import 'package:esys_flutter_share/esys_flutter_share.dart';
使用以下代码:
var request = await HttpClient().getUrl(Uri.parse('https://yourImageURL.jpg'));
var response = await request.close();
Uint8List bytes = await consolidateHttpClientResponseBytes(response);
await Share.file('ESYS AMLOG', 'amlog.jpg', bytes, 'image/jpg');
修改后的代码,用于网络图像的包更新(API)
import 'package:http/http.dart' show get;
void shareImage({required String url}) async {
final response = await get(Uri.parse(url));
final directory = await getTemporaryDirectory();
File file = await File('${directory.path}/Image.png')
.writeAsBytes(response.bodyBytes);
await Share.shareXFiles([XFile(file.path)], text: 'Share');}