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 配置

  1. 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>
  1. 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 配置

  1. 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

  1. 添加支持的 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>
  1. 配置 WhatsApp:
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>whatsapp</string>
</array>
  1. 配置 Twitter:
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>twitter</string>
</array>

使用方法

导入插件

在 Dart 文件中导入插件:

import 'package:flutter_social_share/flutter_social_share.dart';

方法说明

Facebook

Future<String?> shareToFacebook({String? msg, String? url});
  • msg: 文本消息。
  • url: 分享的 URL。

Twitter

Future<String?> shareToTwitter({String? msg, String? url});
  • msg: 文本消息。
  • url: 分享的 URL。

WhatsApp

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: 包含国家代码的电话号码。

Instagram

Future<String?> shareToInstagram({String? filePath, FileType? fileType});
  • filePath: 文件路径。
  • fileType: 文件类型 (FileType.imageFileType.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

1 回复

更多关于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'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部