如何在 flutter 中从 API(URL) 共享图像?

问题描述 投票:0回答:4

在这里我想

share
image
我通过
API
。我为此功能尝试了不同的方法,但我没有得到任何解决方案,因为每个解决方案都只有一张图像。

确切地说,我从

Url
获得多张图片,然后在下一页打开任何特定的
image
。所以,我想
share
我在另一个页面打开的那个
image

我试过

sharing image
,但我做不到。每当我尝试
share
那个
image
Image
url
share
sharing
选项在
device
但我想要
share
image
不是
URl
image
我怎么能完成这个?

flutter dart flutter-layout flutter-dependencies
4个回答
4
投票

你必须这样下载图片:

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']);

1
投票

感谢@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]);


  }

0
投票

您可以使用esys_flutter_share插件。

  1. 安装它,然后获取依赖项:

    dependencies:
      esys_flutter_share: ^1.0.2 
    
  2. 将插件导入您的代码:

    import 'package:esys_flutter_share/esys_flutter_share.dart';
    
  3. 使用以下代码:

    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');
    

0
投票

修改后的代码,用于网络图像的包更新(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');}
© www.soinside.com 2019 - 2024. All rights reserved.