Hi Guys, Welcome to Proto Coders Point, In this flutter tutorial will learn how to share text, links, images, videos & files(pdf,doc) from your flutter app to another apps like whatsapp, facebook, Instagram…
Flutter share_plus package
To share content from our flutter app to another app, we make use of share_plus.
Share plus in flutter is a plugin for sharing app content such as text or files via the platform sharing UI, using ACTION_VIEW in Android & UIActivityViewController in iOS platform.
This share_plus package support all the platform like Android, iOS, macOS, Web, Linux and Windows.
Note: In Windows & Linus only Text sharing is supported using ‘mailto’, File sharing is not supported in windows & Linux.
Packages used in share files, Images, Text.
- Share_plus: will help us in content sharing to another app.
- http: used to download image from url (make network call).
- path_provider: get the path where image is downloaded.
- image_picker: user can pick image or video from galary or camera.
- file_picker: helps us in picking any kind of files like pdf, doc, mp4, mp3 etc.
Therefore by using above package we will play with content to share them using share_plus plugin.
Video Tutorial on Share_Plus
Let’s get Started
Step 1: Add required dependencies
Open pubspec.yaml file and under dependencies section add below packages.
dependencies: share_plus: http: path_provider: image_picker: file_picker:
Step 2: Import all of them where required
Then, to use the packages you need to import them where it’s required (say main.dart)
import 'package:path_provider/path_provider.dart'; import 'package:share_plus/share_plus.dart'; import 'package:http/http.dart' as http; import 'package:image_picker/image_picker.dart'; import 'package:file_picker/file_picker.dart';
How to share Text & Files in flutter
In Share plus package we have 2 method that let us in sharing content like text and files.
Text Sharing: Share.share(' your text message here ');
File Sharing: Share.shareFiles([path], text: 'Image Shared'); // here path is the location of file in your mobile directory.
1. Share Text Message with links to another app using share_plus
Here i have TextField & Button, user can enter text message in TextField & press on share button to share the text to another app for example like Whatsapp by using share_plus methods.
TextEditingController textdata = TextEditingController();
Padding(
padding: const EdgeInsets.only(left: 8, right: 8),
child: TextField(
controller: textdata,
decoration: const InputDecoration(
border: OutlineInputBorder(),
label: Text('Enter Message'))),
),
ElevatedButton(
child: const Text('Share Text'),
onPressed: () async {
if (textdata.value.text.isNotEmpty) {
final url = 'https://protocoderspoint.com/';
await Share.share('${textdata.value.text} ${url}');
}
},
),
2. Share image from assets folder of flutter project
ElevatedButton(
child: const Text('Share Assets Folder Image'),
onPressed: () async {
ByteData imagebyte = await rootBundle.load('assets/images/image1.jpg');
final temp = await getTemporaryDirectory();
final path = '${temp.path}/image1.jpg';
File(path).writeAsBytesSync(imagebyte.buffer.asUint8List());
await Share.shareFiles([path], text: 'Image Shared');
},
),
3. Download image from url & share it
Here we will download image from a url using http package & store it into temporary directory & then get the path of downloaded image using path provider & share the image file using share_plus.
Image.network(imageurl),
ElevatedButton(
child: const Text('Share Image'),
onPressed: () async {
final imageurl = 'define your image url here';
final uri = Uri.parse(imageurl);
final response = await http.get(uri);
final bytes = response.bodyBytes;
final temp = await getTemporaryDirectory();
final path = '${temp.path}/image.jpg';
File(path).writeAsBytesSync(bytes);
await Share.shareFiles([path], text: 'Image Shared');
},
),
4. Pick image or video from galary or camera & share it
Pick image from Galary and share it
ElevatedButton(
child: const Text('Share From Galary'),
onPressed: () async {
//pick image from Galery
final imagepick = await ImagePicker().pickImage(source: ImageSource.gallery);
if(imagepick == null){
return;
}
await Share.shareFiles([imagepick.path]);
},
),
Pick image from camera and share it
ElevatedButton(
child: const Text('Share From Camera'),
onPressed: () async {
//pick image from Camera
final imagepick = await ImagePicker().pickImage(source: ImageSource.camera);
if(imagepick == null){
return;
}
await Share.shareFiles([imagepick.path]);
},
),
Pick videos from galary and share it using shareplus package
ElevatedButton(
child: const Text('Share From Camera'),
onPressed: () async {
final imagepick = await ImagePicker().pickVideo(source: ImageSource.gallery);
if(imagepick == null){
return;
}
await Share.shareFiles([imagepick.path]);
},
),
5. File picker – pick document files & share it
ElevatedButton(
child: const Text('Pick document Files and share it'),
onPressed: () async {
final result = await FilePicker.platform.pickFiles();
List<String>? files = result?.files
.map((file) => file.path)
.cast<String>()
.toList();
if (files == null) {
return;
}
await Share.shareFiles(files);
},
),
Complete Source Code – GitHub





