'How to Share Image from API(URL) in flutter?

Here I want to share image which I get through API. I tried different method for this functionality but I did not get any solution because every solutions have for only one image.

Exactly, I get multiple image from Url and I open any particular image in next page. So, I want to share that image which I opened in another page.

I tried for sharing image but I could not did this. Whenever I try to share that image, Image url share with sharing option on device but I want share image not URl of image How I can accomplish this?



Solution 1:[1]

You can use the esys_flutter_share plugin.

  1. Install it, and then get dependencies:

    dependencies:
      esys_flutter_share: ^1.0.2 
    
  2. Import the plugin to your code:

    import 'package:esys_flutter_share/esys_flutter_share.dart';
    
  3. Use the below code:

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

Solution 2:[2]

You have to download the image like this:

http.Response response = await http.get(url);

then create an image on the device using the downloaded image like this (Read and Write Files):

final directory = await getTemporaryDirectory();
final path = directory.path;
final file = File('$path/image.png');
file.writeAsBytes(response.bodyBytes);

The getTemporaryDirectory() is in the plugin path_provider. Now, you have the image you'd like to share stored in the temporarily as "image.png" and you can use the share_plus plugin to share the image like this:

Share.shareFiles(['$path/image.png']);

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Cody Gray
Solution 2 Abdulrazak Zakieh