Flutter社交网络分享插件share_social_network的使用

Flutter社交网络分享插件share_social_network的使用

pub package

一个现成的平台,提供了多种分享方式。您将需要直接访问某些流行的应用程序或仅使用内置默认分享。

平台

该插件在以下平台运行:

  • Android
  • iOS
Image Image Image
视频 照片 视频

初始设置

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

1 回复

更多关于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插件:

  1. 导入插件
import 'package:share_social_network/share_social_network.dart';
  1. 配置并分享内容

下面是一个完整的示例,展示如何配置并分享文本和图像到多个社交网络:

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插件的最新文档,可能需要对代码进行适当调整,以确保兼容性和最佳实践。建议查阅官方文档(如果可用)以获取最新信息和高级用法。

回到顶部