Flutter社交网络分享插件share_social_network的使用
Flutter社交网络分享插件share_social_network的使用
一个现成的平台,提供了多种分享方式。您将需要直接访问某些流行的应用程序或仅使用内置默认分享。
平台
该插件在以下平台运行:
- Android
- iOS
![]() |
![]() |
![]() |
---|---|---|
视频 | 照片 | 视频 |
初始设置
Android配置
在 android/app/src/main/AndroidManifest.xml
中添加以下属性:
xmlns:tools="http://schemas.android.com/tools"
创建名为 filepaths.xml
的文件,并将其放置在 app/src/main/res/xml
文件夹中,然后粘贴以下代码:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="image" path="/"/>
</paths>
在 android/app/src/main/AndroidManifest.xml
文件中的 <manifest>
和 <application>
标签之间添加以下代码片段:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.com.weeidl.share_social_network"
android:exported="false"
android:grantUriPermissions="true"
tools:replace="android:authorities">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepaths" />
</provider>
iOS配置
在 Info.plist
中添加以下内容以使用Instagram和Facebook故事分享:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>instagram-stories</string>
<string>facebook-stories</string>
<string>facebook</string>
<string>instagram</string>
<string>twitter</string>
<string>whatsapp</string>
<string>tg</string>
</array>
如果您要使用Facebook分享,请添加以下内容。为此,您需要在 https://developers.facebook.com/ 创建一个应用并获取App ID:
<key>FacebookAppID</key>
<string>xxxxxxxxxxxxxxx</string>
开始使用
在 pubspec.yaml
文件中添加该包:
share_social_network: ^1.2.9
在您的 Dart 文件中导入库:
import 'package:share_social_network/share_social_network.dart';
使用 ShareSocialNetwork.show
小部件代替 ShareSocialNetwork
:
ShareSocialNetwork.show(
context: context,
backgroundColor: Colors.white,
pillColor: Colors.black12,
transitionDuration: Duration(milliseconds: 300),
screenshotController: screenshotController,
copyToClipboard: "https://github.com/weeidl/share_social...",
telegram: Telegram(
content: "Hello World \n https://github.com/weeidl",
),
instagram: Instagram(
backgroundBottomColor: "#FF7391",
backgroundTopColor: "#591E78",
attributionURL: "https://deep-link-url",
imagePath: imagePath,
),
facebook: Facebook(
backgroundTopColor: "#ffffff",
attributionURL: "https://github.com/weeidl",
backgroundBottomColor: "#000000",
imagePath: imagePath,
appId: "xxxxxxxxxxxxx",
),
more: More(
message: 'Hello World \n https://github.com/weeidl',
),
twitter: Twitter(
captionText: 'Share twitter',
hashtags: ["hello", "world", "weeild", "artur"],
url: 'https://github.com/weeidl',
trailingText: " \nweeidl",
),
whatsapp: Whatsapp(
content: 'Hello World \n https://github.com/weeidl',
),
);
示例
以下是如何向Instagram发送内容的示例:
ScreenshotController screenshotController = ScreenshotController();
void shareSocialNetwork(BuildContext context) async {
String imagePath = await screenshotController.capture().then((image) async {
final directory = await getApplicationDocumentsDirectory();
final file = await File('${directory.path}/temp.png').create();
await file.writeAsBytes(image!);
return file.path;
});
ShareSocialNetwork.show(
context: context,
backgroundColor: Colors.white,
pillColor: Colors.black12,
transitionDuration: Duration(milliseconds: 300),
screenshotController: screenshotController,
copyToClipboard: "https://github.com/weeidl/share_social...",
instagram: Instagram(
backgroundBottomColor: "#FF7391",
backgroundTopColor: "#591E78",
attributionURL: "https://deep-link-url",
imagePath: imagePath,
),
);
}
示例代码
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:screenshot/screenshot.dart';
import 'package:share_social_network/models/facebook.dart';
import 'package:share_social_network/models/instagram.dart';
import 'package:share_social_network/models/more.dart';
import 'package:share_social_network/models/telegram.dart';
import 'package:share_social_network/models/twitter.dart';
import 'package:share_social_network/models/whatsapp.dart';
import 'package:share_social_network/share_social_network.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Custom Bottom Sheet',
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
[@override](/user/override)
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
ScreenshotController screenshotController = ScreenshotController();
void shareSocialNetwork(BuildContext context) async {
String imagePath = await screenshotController.capture().then((image) async {
final directory = await getApplicationDocumentsDirectory();
final file = await File('${directory.path}/temp.png').create();
await file.writeAsBytes(image!);
return file.path;
});
ShareSocialNetwork.show(
context: context,
backgroundColor: Colors.white,
pillColor: Colors.black12,
transitionDuration: Duration(milliseconds: 300),
screenshotController: screenshotController,
copyToClipboard: "https://github.com/weeidl/share_social...",
telegram: Telegram(
content: "Hello World \n https://github.com/weeidl",
),
instagram: Instagram(
backgroundBottomColor: "#FF7391",
backgroundTopColor: "#591E78",
attributionURL: "https://deep-link-url",
imagePath: imagePath,
),
facebook: Facebook(
backgroundTopColor: "#ffffff",
attributionURL: "https://github.com/weeidl",
backgroundBottomColor: "#000000",
imagePath: imagePath,
appId: "xxxxxxxxxxxxx",
),
more: More(
message: 'Hello World \n https://github.com/weeidl',
),
twitter: Twitter(
captionText: 'Share twitter',
hashtags: ["hello", "world", "weeild", "artur"],
url: 'https://github.com/weeidl',
trailingText: " \nweeidl",
),
whatsapp: Whatsapp(
content: 'Hello World \n https://github.com/weeidl',
),
);
}
[@override](/user/override)
Widget build(BuildContext context) {
return Material(
child: Screenshot(
controller: screenshotController,
child: Center(
child: ElevatedButton(
onPressed: () {
shareSocialNetwork(context);
},
child: Text('点击此处'),
)),
),
);
}
}
更多关于Flutter社交网络分享插件share_social_network的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter社交网络分享插件share_social_network的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用share_social_network
插件进行社交网络分享的示例代码。这个插件允许你轻松地将内容分享到多个社交网络。
首先,确保你的Flutter项目已经设置好了,并且你已经添加了share_social_network
插件到你的pubspec.yaml
文件中:
dependencies:
flutter:
sdk: flutter
share_social_network: ^最新版本号 # 请替换为当前最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Dart文件中,你可以按照以下步骤使用share_social_network
插件:
- 导入插件:
import 'package:share_social_network/share_social_network.dart';
- 配置并分享内容:
下面是一个完整的示例,展示如何配置并分享文本和图像到多个社交网络:
import 'package:flutter/material.dart';
import 'package:share_social_network/share_social_network.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SharePage(),
);
}
}
class SharePage extends StatefulWidget {
@override
_SharePageState createState() => _SharePageState();
}
class _SharePageState extends State<SharePage> {
final ShareSocialNetwork _shareSocialNetwork = ShareSocialNetwork();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Social Network Sharing'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: () async {
String textToShare = "Hello, I am sharing this content!";
String imageUrl =
"https://example.com/path/to/your/image.jpg"; // 替换为你的图片URL
// 配置分享内容
final ShareConfig config = ShareConfig(
title: "Check this out!",
text: textToShare,
imageUrl: imageUrl,
);
try {
// 分享到多个网络
await _shareSocialNetwork.shareToWhatsApp(config);
await _shareSocialNetwork.shareToFacebook(config);
await _shareSocialNetwork.shareToTwitter(config);
// 可以根据需要添加更多分享平台
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Content shared successfully!'),
),
);
} catch (e) {
print("Error sharing: $e");
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text('Failed to share content.'),
backgroundColor: Colors.red,
),
);
}
},
child: Text('Share Content'),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。点击按钮时,会尝试将预设的文本和图像分享到WhatsApp、Facebook和Twitter。你需要确保设备上已经安装了这些应用,并且它们支持从其他应用接收分享内容。
请注意,由于各社交平台API的限制,实际分享功能可能需要额外的配置,比如OAuth认证等,这里只是展示了基本的分享调用方法。
此外,根据share_social_network
插件的最新文档,可能需要对代码进行适当调整,以确保兼容性和最佳实践。建议查阅官方文档(如果可用)以获取最新信息和高级用法。