Flutter社交分享功能插件social_share_plugin_woo的使用

Flutter社交分享功能插件social_share_plugin_woo的使用

social_share_plugin

Social Share to Facebook and Instagram Flutter插件。


开始使用

为了开始使用,你需要在你的Flutter项目中声明一个pubspec依赖。此外,还需要完成一些基本的Android和iOS配置,否则应用程序可能会崩溃。


在你的Flutter项目中

查看安装说明


Android

除了上述步骤,你还需要做以下操作:

对于这些需求的详细信息,请参阅Android入门指南

完成后,找到你的Facebook App ID。你可以在Facebook开发者控制台中找到你的Facebook应用仪表板中的Facebook App ID。

一旦确定了Facebook App ID,你需要执行以下两步:

首先,在你的字符串资源文件中复制粘贴以下内容。如果没有该文件,可以创建一个。

路径:<你的项目根目录>/android/app/src/main/res/values/strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">你的应用名称。</string>

    <!-- 替换为你的Facebook App ID -->
    <string name="facebook_app_id">000000000000</string>
</resources>

然后,将以下内容复制粘贴到你的AndroidManifest.xml中,并用你的Facebook App ID替换000000000000000,同时在AndroidManifest.xml中设置一个ContentProvider,其中{APP_ID}为你的应用ID:

路径:<你的项目根目录>/android/app/src/main/AndroidManifest.xml

<queries>
    <package android:name="com.twitter.android" />
    <package android:name="com.facebook.katana" />
    <package android:name="com.instagram.android" />
</queries>

<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>

<meta-data android:name="com.facebook.sdk.ApplicationName"
            android:value="@string/app_name"/>

<activity android:name="com.facebook.FacebookActivity"
    android:configChanges=
            "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name" />

<provider android:authorities="com.facebook.app.FacebookContentProvider{FACEBOOK_APP_ID}"
            android:name="com.facebook.FacebookContentProvider"
            android:exported="true"/>

<provider android:name="androidx.core.content.FileProvider"
            android:authorities="{APP_PACKAGE}.social.share.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>

完成!


iOS

在向你的应用添加共享功能之前,你需要:

  • 添加Facebook iOS SDK到你的移动开发环境。
  • 配置并链接你的Facebook App ID
  • 将你的App ID、显示名称以及照片访问的人类可读原因添加到你的应用的.plist文件中。

完成后,找到你的Facebook App ID。你可以在Facebook开发者控制台中找到你的Facebook应用仪表板中的Facebook App ID。

一旦确定了Facebook App ID,只需将以下内容复制粘贴到你的Info.plist文件中,放在</dict></plist>标签之前。

路径:<你的项目根目录>/ios/Runner/Info.plist

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <!--
              替换为你的Facebook App ID。
              注意:方案需要以`fb`开头,然后是你的ID。
            -->
            <string>fb000000000000</string>
        </array>
    </dict>
</array>

<key>FacebookAppID</key>

<!-- 替换为你的Facebook App ID -->
<string>000000000000</string>
<key>FacebookDisplayName</key>

<!-- 替换为你的Facebook App 名称 -->
<string>YOUR_APP_NAME</string>

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>instagram</string>
    <string>fbapi</string>
    <string>fb-messenger-share-api</string>
    <string>fbauth2</string>
    <string>fbshareextension</string>
    <string>twitter</string>
</array>

完成!


如何使用它?

Instagram

import 'package:social_share_plugin/social_share_plugin.dart';
File file = await ImagePicker.pickImage(source: ImageSource.gallery);
await SocialSharePlugin.shareToFeedInstagram(path: file.path);

Facebook

import 'package:social_share_plugin/social_share_plugin.dart';
File file = await ImagePicker.pickImage(source: ImageSource.gallery);
await SocialSharePlugin.shareToFeedFacebook(path: file.path);
await SocialSharePlugin.shareToFeedFacebookLink(quote: 'quote', url: 'https://flutter.dev');

Twitter

import 'package:social_share_plugin/social_share_plugin.dart';

await SocialSharePlugin.shareToTwitterLink(text: 'text', url: 'https://flutter.dev');

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:social_share_plugin/social_share_plugin.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
    initPlatformState();
  }

  // 平台消息是异步的,因此我们需要在一个异步方法中初始化。
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch来捕获PlatformException。
    // 我们还处理了消息可能返回null的情况。
    try {
      platformVersion =
          await SocialSharePlugin.platformVersion ?? 'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }

    // 如果小部件从树中被移除而异步平台消息仍在进行中,我们希望丢弃回复而不是调用setState更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行于: $_platformVersion\n'),
        ),
      ),
    );
  }
}

更多关于Flutter社交分享功能插件social_share_plugin_woo的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter社交分享功能插件social_share_plugin_woo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


social_share_plugin_woo 是一个用于在 Flutter 应用中实现社交分享功能的插件。它支持分享到多个社交平台,如 Facebook、Twitter、WhatsApp、Instagram 等。以下是如何使用 social_share_plugin_woo 插件的详细步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 social_share_plugin_woo 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  social_share_plugin_woo: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在需要使用社交分享功能的 Dart 文件中导入插件:

import 'package:social_share_plugin_woo/social_share_plugin_woo.dart';

3. 使用插件进行分享

social_share_plugin_woo 提供了多种分享方法,以下是一些常见的用法示例:

分享文本到 WhatsApp

void shareToWhatsApp() async {
  try {
    await SocialSharePluginWoo.shareToWhatsApp("Hello, check this out!");
  } catch (e) {
    print("Error sharing to WhatsApp: $e");
  }
}

分享图片到 Instagram

void shareImageToInstagram() async {
  try {
    await SocialSharePluginWoo.shareToInstagram(
      imagePath: "assets/images/example.jpg",
      caption: "Check out this cool image!",
    );
  } catch (e) {
    print("Error sharing to Instagram: $e");
  }
}

分享链接到 Facebook

void shareLinkToFacebook() async {
  try {
    await SocialSharePluginWoo.shareToFacebook(
      url: "https://example.com",
      quote: "Check out this link!",
    );
  } catch (e) {
    print("Error sharing to Facebook: $e");
  }
}

分享文本到 Twitter

void shareToTwitter() async {
  try {
    await SocialSharePluginWoo.shareToTwitter(
      text: "Hello, check this out!",
      url: "https://example.com",
    );
  } catch (e) {
    print("Error sharing to Twitter: $e");
  }
}

4. 处理权限

在某些情况下,分享功能可能需要特定的权限(例如访问存储权限以分享图片)。确保在 AndroidManifest.xmlInfo.plist 文件中配置了必要的权限。

Android

AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

iOS

Info.plist 中添加以下权限:

<key>NSPhotoLibraryUsageDescription</key>
<string>We need access to your photos to share images.</string>

5. 运行应用

完成上述步骤后,运行你的 Flutter 应用并测试社交分享功能。

6. 处理错误

在实际使用中,可能会遇到各种错误(例如用户未安装目标应用)。确保在代码中妥善处理这些错误,以提供更好的用户体验。

7. 参考文档

更多详细信息和高级用法,请参考 social_share_plugin_woo 的官方文档或 GitHub 仓库。

示例代码

以下是一个完整的示例代码,展示了如何使用 social_share_plugin_woo 进行多种分享操作:

import 'package:flutter/material.dart';
import 'package:social_share_plugin_woo/social_share_plugin_woo.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: [
              ElevatedButton(
                onPressed: shareToWhatsApp,
                child: Text('Share to WhatsApp'),
              ),
              ElevatedButton(
                onPressed: shareImageToInstagram,
                child: Text('Share Image to Instagram'),
              ),
              ElevatedButton(
                onPressed: shareLinkToFacebook,
                child: Text('Share Link to Facebook'),
              ),
              ElevatedButton(
                onPressed: shareToTwitter,
                child: Text('Share to Twitter'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void shareToWhatsApp() async {
    try {
      await SocialSharePluginWoo.shareToWhatsApp("Hello, check this out!");
    } catch (e) {
      print("Error sharing to WhatsApp: $e");
    }
  }

  void shareImageToInstagram() async {
    try {
      await SocialSharePluginWoo.shareToInstagram(
        imagePath: "assets/images/example.jpg",
        caption: "Check out this cool image!",
      );
    } catch (e) {
      print("Error sharing to Instagram: $e");
    }
  }

  void shareLinkToFacebook() async {
    try {
      await SocialSharePluginWoo.shareToFacebook(
        url: "https://example.com",
        quote: "Check out this link!",
      );
    } catch (e) {
      print("Error sharing to Facebook: $e");
    }
  }

  void shareToTwitter() async {
    try {
      await SocialSharePluginWoo.shareToTwitter(
        text: "Hello, check this out!",
        url: "https://example.com",
      );
    } catch (e) {
      print("Error sharing to Twitter: $e");
    }
  }
}
回到顶部