social_sharing_plus
A Flutter plugin for sharing content, images and videos to social media platforms like Facebook, Twitter, LinkedIn, WhatsApp, Reddit, and Telegram.
A Flutter plugin for sharing content, images and videos to social media platforms like Facebook, Twitter, LinkedIn, WhatsApp, Reddit, and Telegram.
{"sdk":"flutter"}^2.0.2{"sdk":"flutter"}^3.0.0English project snapshot. Visit GitHub for the latest content.
https://github.com/user-attachments/assets/c4ae675c-af94-44c3-b24b-b46db3a07eff
social_sharing_plus is a Flutter plugin that allows you to share content, images and videos to various social media platforms like Facebook, Twitter, LinkedIn, WhatsApp, Reddit, and Telegram. This package provides a simple and unified interface for sharing across different apps, handling the nuances and differences of each platform.
🚀 Exciting News! You can now share multiple images and videos with text(optional)! 📸🎥
social_sharing_plus is supported on Android and iOS platforms. On the Android side, queries are made with the package names of the respective apps. This requires the addition of some Android-specific code.
Add queries for app packages
You need to add the following queries to your app's AndroidManifest.xml file to ensure proper redirection to the respective social media apps:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<queries>
<!-- Query for Facebook -->
<package android:name="com.facebook.katana" />
<!-- Query for Twitter -->
<package android:name="com.twitter.android" />
<!-- Query for LinkedIn -->
<package android:name="com.linkedin.android" />
<!-- Query for Reddit -->
<package android:name="com.reddit.frontpage" />
<!-- Query for WhatsApp -->
<package android:name="com.whatsapp" />
<!-- Query for Telegram -->
<package android:name="org.telegram.messenger" />
</queries>
<application>
<!-- ... -->
</application>
</manifest>
Media Sharing and Media Provider
This provides a specific file provider so that it can share files with other applications. To provide this functionality, you need to create an XML folder under the android>app>src>main>res folder and name it filepaths.xml. Then add the following code to the filepaths.xml file:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="cache" path="." />
<external-path name="external" path="." />
</paths>
This XML file specifies what types of files your file provider can provide. Then add a <provider> tag in your AndroidManifest.xml file like this:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
This <provider> tag specifies the authorization of your file provider and what file paths it provides. The android:authorities attribute specifies the identity of your file provider, and the ${applicationId}.fileprovider value uses your application's credentials. This ensures the security of your application while allowing other applications to access files.
No special configuration is needed for iOS.
dependencies:
social_sharing_plus: ^1.2.3
import 'package:social_sharing_plus/social_sharing_plus.dart';
static const SocialPlatform platform = SocialPlatform.facebook;
String? _mediaPath; // add image or video path
List<String> _mediaPaths = []; // add image or video paths
bool isMultipleShare = true;
isMultipleShare
? await SocialSharingPlus.shareToSocialMediaWithMultipleMedia(
platform,
media: _mediaPaths,
content: content,
isOpenBrowser: false,
onAppNotInstalled: () {
ScaffoldMessenger.of(context)
..hideCurrentSnackBar()
..showSnackBar(SnackBar(
content: Text('${platform.name.capitalize} is not installed.'),
));
},
)
: await SocialSharingPlus.shareToSocialMedia(
platform,
content,
media: _mediaPath,
isOpenBrowser: true,
);
shareToSocialMedia:| Properties | Required | Default | Description |
|---|---|---|---|
| socialPlatform | true | Platform you want to share on | |
| content | true | Any text you want to share | |
| media | false | The image or video you want to share | |
| isOpenBrowser | false | true |
If the relevant application is not installed, it redirects to the link (browser) of the relevant application. |
| onAppNotInstalled | false | This method works if the application is not installed and the isOpenBrowser value is set to false. (For example: Showing a Snackbar like "The application is not installed on your device."...) |
shareToSocialMediaWithMultipleMedia:| Properties | Required | Default | Description |
|---|---|---|---|
| socialPlatform | true | Platform you want to share on | |
| content | false | Any text you want to share | |
| media | true | The image or video you want to share | |
| isOpenBrowser | false | true |
If the relevant application is not installed, it redirects to the link (browser) of the relevant application. |
| onAppNotInstalled | false | This method works if the application is not installed and the isOpenBrowser value is set to false. (For example: Showing a Snackbar like "The application is not installed on your device."...) |
sdk: '>=2.17.0 <4.0.0'
Please file any issues, bugs, or feature requests as an issue on our GitHub page.
If you would like to contribute to the plugin (e.g. by improving the documentation, solving a bug, or adding a cool new feature), please carefully review our contribution guide and send us your pull request.
This social_sharing_plus plugin for Flutter is developed by Bedirhan Sağlam. You can contact me at <bedirhansaglam270@gmail.com>
MIT