Flutter社交分享功能插件flutter_social_share1的使用
简介
flutter_social_share
是一个用于在 Flutter 应用中实现社交分享功能的插件。它支持多种社交平台,包括 Facebook、WhatsApp(包括 WhatsApp Business)、Twitter、Instagram、Telegram 和系统分享界面。你可以通过该插件分享文本消息或 URL。
注意: 该插件仍在开发中,部分 API 可能尚未完全可用。欢迎提供反馈和提交 Pull Request!
开始使用
添加依赖
在 pubspec.yaml
文件中添加 flutter_social_share
作为依赖:
dependencies:
flutter:
sdk: flutter
# 添加 flutter_social_share 插件
flutter_social_share: ^0.11.0
然后运行以下命令安装依赖:
flutter pub get
配置
Android 配置
- 在
AndroidManifest.xml
中添加 Facebook App ID:
<application>
...
<!-- 添加 Facebook 配置 -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<provider
android:name="com.facebook.FacebookContentProvider"
android:authorities="com.facebook.app.FacebookContentProvider[facebook_app_id]"
android:exported="false" />
</application>
- 在
res/values/strings.xml
中定义 Facebook App ID:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<!-- 替换为你的 Facebook App ID -->
<string name="facebook_app_id">343254889799245</string>
</resources>
iOS 配置
- 在
Info.plist
文件中配置 Facebook:
<key>FacebookAppID</key>
<string>fbid</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb-your-fb-id</string>
</array>
</dict>
</array>
确保在 CFBundleURLSchemes
前添加 fb
。
- 添加支持的 URL Scheme:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbapi20160328</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
<string>tg</string>
</array>
- 配置 WhatsApp:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
</array>
- 配置 Twitter:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>twitter</string>
</array>
使用方法
导入插件
在 Dart 文件中导入插件:
import 'package:flutter_social_share/flutter_social_share.dart';
方法说明
Future<String?> shareToFacebook({String? msg, String? url});
msg
: 文本消息。url
: 分享的 URL。
Future<String?> shareToTwitter({String? msg, String? url});
msg
: 文本消息。url
: 分享的 URL。
Future<String?> shareToWhatsApp({String? msg, String? imagePath});
msg
: 文本消息。imagePath
: 图片路径。
WhatsApp Business
Future<String?> shareToWhatsApp4Biz({String? msg, String? imagePath});
仅支持 Android。
WhatsApp 个人消息
Future<String?> shareWhatsAppPersonalMessage(String message, String phoneNumber);
message
: 文本消息。phoneNumber
: 包含国家代码的电话号码。
Future<String?> shareToInstagram({String? filePath, FileType? fileType});
filePath
: 文件路径。fileType
: 文件类型 (FileType.image
或FileType.video
)。
Telegram
Future<String?> shareToTelegram({String? msg});
msg
: 文本消息。
系统分享
Future<String?> shareToSystem({String? msg});
msg
: 文本消息。
示例代码
以下是一个完整的示例代码,展示如何使用 flutter_social_share
插件进行社交分享:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_social_share/file_type.dart';
import 'package:flutter_social_share/flutter_social_share.dart';
import 'package:image_picker/image_picker.dart';
/// 分享平台枚举
enum Share {
facebook,
messenger,
twitter,
whatsapp,
whatsapp_personal,
whatsapp_business,
share_system,
share_instagram,
share_telegram
}
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
File? file;
ImagePicker picker = ImagePicker();
bool videoEnable = false;
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Container(
width: double.infinity,
child: Column(
children: <Widget>[
const SizedBox(height: 30),
ElevatedButton(onPressed: pickImage, child: Text('选择图片')),
ElevatedButton(onPressed: pickVideo, child: Text('选择视频')),
ElevatedButton(onPressed: () => onButtonTap(Share.twitter), child: const Text('分享到 Twitter')),
ElevatedButton(onPressed: () => onButtonTap(Share.whatsapp), child: const Text('分享到 WhatsApp')),
ElevatedButton(onPressed: () => onButtonTap(Share.whatsapp_business), child: const Text('分享到 WhatsApp Business')),
ElevatedButton(onPressed: () => onButtonTap(Share.whatsapp_personal), child: const Text('发送 WhatsApp 个人消息')),
ElevatedButton(onPressed: () => onButtonTap(Share.facebook), child: const Text('分享到 Facebook')),
ElevatedButton(onPressed: () => onButtonTap(Share.messenger), child: const Text('分享到 Messenger')),
ElevatedButton(onPressed: () => onButtonTap(Share.share_instagram), child: const Text('分享到 Instagram')),
ElevatedButton(onPressed: () => onButtonTap(Share.share_telegram), child: const Text('分享到 Telegram')),
ElevatedButton(onPressed: () => onButtonTap(Share.share_system), child: const Text('使用系统分享')),
],
),
),
),
);
}
Future<void> pickImage() async {
final XFile? xFile = await picker.pickImage(source: ImageSource.gallery);
print(xFile);
if (xFile != null) {
file = File(xFile.path);
setState(() {
videoEnable = false;
});
}
}
Future<void> pickVideo() async {
final XFile? xFile = await picker.pickVideo(source: ImageSource.gallery);
print(xFile);
if (xFile != null) {
file = File(xFile.path);
setState(() {
videoEnable = true;
});
}
}
Future<void> onButtonTap(Share share) async {
String msg = 'Flutter 分享功能很棒!\n 查看完整示例:https://pub.dev/packages/flutter_social_share';
String url = 'https://pub.dev/packages/flutter_social_share';
String? response;
final FlutterSocialShare flutterShareMe = FlutterSocialShare();
switch (share) {
case Share.facebook:
response = await flutterShareMe.shareToFacebook(url: url, msg: msg);
break;
case Share.messenger:
response = await flutterShareMe.shareToMessenger(url: url, msg: msg);
break;
case Share.twitter:
response = await flutterShareMe.shareToTwitter(url: url, msg: msg);
break;
case Share.whatsapp:
if (file != null) {
response = await flutterShareMe.shareToWhatsApp(
imagePath: file!.path, fileType: videoEnable ? FileType.video : FileType.image);
} else {
response = await flutterShareMe.shareToWhatsApp(msg: msg);
}
break;
case Share.whatsapp_business:
response = await flutterShareMe.shareToWhatsApp(msg: msg);
break;
case Share.share_system:
response = await flutterShareMe.shareToSystem(msg: msg);
break;
case Share.whatsapp_personal:
response = await flutterShareMe.shareWhatsAppPersonalMessage(
message: msg, phoneNumber: 'phone-number-with-country-code');
break;
case Share.share_telegram:
response = await flutterShareMe.shareToTelegram(msg: msg);
break;
}
debugPrint(response);
}
}
更多关于Flutter社交分享功能插件flutter_social_share1的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交分享功能插件flutter_social_share1的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_social_share1
是一个用于在 Flutter 应用中实现社交分享功能的插件。它允许你轻松地分享文本、链接、图片等内容到各种社交媒体平台,如 Facebook、Twitter、WhatsApp 等。
以下是如何使用 flutter_social_share1
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 flutter_social_share1
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_social_share1: ^1.0.0 # 请检查最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 flutter_social_share1
插件:
import 'package:flutter_social_share1/flutter_social_share1.dart';
3. 使用插件进行分享
flutter_social_share1
提供了多种分享方法,以下是一些常见的使用示例:
分享文本
FlutterSocialShare1().shareText('Hello, this is a text to share!');
分享链接
FlutterSocialShare1().shareLink('https://example.com', 'Check out this link!');
分享图片
FlutterSocialShare1().shareImage('https://example.com/image.png', 'Check out this image!');
分享到特定平台
你可以指定分享到特定的平台,例如 Facebook、Twitter、WhatsApp 等。
FlutterSocialShare1().shareToFacebook('https://example.com', 'Check out this link on Facebook!');
FlutterSocialShare1().shareToTwitter('https://example.com', 'Check out this link on Twitter!');
FlutterSocialShare1().shareToWhatsApp('https://example.com', 'Check out this link on WhatsApp!');
4. 处理分享结果
你可以通过回调函数来处理分享的结果,例如用户是否成功分享了内容。
FlutterSocialShare1().shareText('Hello, this is a text to share!').then((result) {
if (result == 'success') {
print('Share successful');
} else {
print('Share failed');
}
});
5. 注意事项
- 在 Android 上,你可能需要在
AndroidManifest.xml
中添加必要的权限。 - 在 iOS 上,你可能需要在
Info.plist
中添加必要的配置,例如LSApplicationQueriesSchemes
来支持特定平台的分享。
6. 示例代码
以下是一个完整的示例代码,展示如何使用 flutter_social_share1
插件:
import 'package:flutter/material.dart';
import 'package:flutter_social_share1/flutter_social_share1.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Social Share Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () {
FlutterSocialShare1().shareText('Hello, this is a text to share!').then((result) {
if (result == 'success') {
print('Share successful');
} else {
print('Share failed');
}
});
},
child: Text('Share Text'),
),
ElevatedButton(
onPressed: () {
FlutterSocialShare1().shareLink('https://example.com', 'Check out this link!').then((result) {
if (result == 'success') {
print('Share successful');
} else {
print('Share failed');
}
});
},
child: Text('Share Link'),
),
ElevatedButton(
onPressed: () {
FlutterSocialShare1().shareToFacebook('https://example.com', 'Check out this link on Facebook!').then((result) {
if (result == 'success') {
print('Share successful');
} else {
print('Share failed');
}
});
},
child: Text('Share to Facebook'),
),
],
),
),
),
);
}
}