Flutter社交媒体分享插件social_network_share的使用

Flutter社交媒体分享插件social_network_share的使用

简介

social_network_share 是一个用于在社交网络(如Facebook、Instagram、Twister等)上分享内容的插件。

引言

该插件适用于Android和iOS平台。目前,插件正在逐步完善中,目标是支持更多著名的社交网络平台。

开始使用

首先,在项目的 pubspec.yaml 文件中添加 social_network_share 作为依赖项:

dependencies:
  ...
  social_network_share: ^latest_version

请确保使用的是最新版本的包。

配置设置

Android配置
  1. 添加Facebook应用ID到 AndroidManifest.xml 文件的应用标签中: 在 AndroidManifest.xml 文件中添加以下代码:

    <application>
      ...
      <!-- 添加此行 -->
      <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>
    
  2. 创建名为 styles.xml 的文件: 在 app/src/main/res/values/styles.xml 文件夹中创建一个名为 styles.xml 的文件,并粘贴以下代码:

    <string name="facebook_app_id">xxxxxxxxxx</string>
    
  3. 更多更新信息请参阅: Facebook Android开发指南

iOS配置
  1. Facebook配置

  2. 将信息添加到 info.plist 文件中: 在 info.plist 文件中添加以下代码:

    <key>FacebookAppID</key>
    <string>your-fb-id</string>
    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>fb-your-fb-id</string>
            </array>
        </dict>
    </array>
    

    注意:确保在 CFBundleURLSchemes 中添加了 fb 开头的你的FB ID。

  3. 在URL Scheme中添加以下值(参考示例):

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>fbauth2</string>
        <string>fbapi</string>
        <string>fbshareextension</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>
    
  4. 更多更新信息请参阅: Facebook iOS开发指南

示例代码

以下是一个完整的示例代码,展示了如何使用 social_network_share 插件在Facebook上分享链接和照片:

import 'dart:developer';

import 'package:flutter/material.dart';

import 'package:social_network_share/social_network_share.dart';
import 'package:image_picker/image_picker.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> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: ListView(
            children: [
              TextButton(
                child: const Text("分享链接到Facebook"),
                onPressed: () {
                  shareLinkToFacebook();
                },
              ),
              TextButton(
                child: const Text("分享照片到Facebook"),
                onPressed: () {
                  sharePhotosToFacebook();
                },
              ),
            ],
          ),
        ),
      ),
    );
  }

  void shareLinkToFacebook() async {
    SocialNetworkShare.shareLinkToFacebook(
        url: "https://www.google.com",
        quote: "captions",
        hashTag: "#FlutterIsAwsome",
        onSuccess: onSuccess,
        onCancel: onCancel,
        onError: onError);
  }

  void sharePhotosToFacebook() async {
    final ImagePicker _picker = ImagePicker();
    List<XFile>? images = await _picker.pickMultiImage();
    List<String> paths = [];
    if (images != null) {
      for (var item in images) {
        paths.add(item.path);
      }
      log(paths.join('|'));
      final result =
          await SocialNetworkShare.sharePhotosToFacebook(paths: paths);
      log(result.toString());
    } else {
      log("Something Wrong");
    }
  }

  void onSuccess(String? postId) {
    log("onSuccess: $postId");
  }

  void onCancel() {
    log("onCancel");
  }

  void onError(String? error) {
    log("onError: $error");
  }
}

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

1 回复

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


social_network_share 是一个用于在 Flutter 应用中分享内容到各种社交媒体平台的插件。它支持分享到 Facebook、Twitter、WhatsApp、Instagram 等平台。以下是如何在 Flutter 项目中使用 social_network_share 插件的详细步骤。

1. 添加依赖

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

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

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

2. 导入插件

在需要使用分享功能的 Dart 文件中导入 social_network_share

import 'package:social_network_share/social_network_share.dart';

3. 分享到不同平台

分享到 Facebook

void shareToFacebook() async {
  bool result = await SocialNetworkShare.shareOnFacebook(
    url: 'https://example.com',
    quote: 'Check out this awesome website!',
  );
  print(result ? 'Shared successfully' : 'Failed to share');
}

分享到 Twitter

void shareToTwitter() async {
  bool result = await SocialNetworkShare.shareOnTwitter(
    text: 'Check out this awesome website!',
    url: 'https://example.com',
    hashtags: ['flutter', 'dart'],
  );
  print(result ? 'Shared successfully' : 'Failed to share');
}

分享到 WhatsApp

void shareToWhatsApp() async {
  bool result = await SocialNetworkShare.shareOnWhatsApp(
    phoneNumber: '1234567890',  // 可选
    message: 'Check out this awesome website!',
  );
  print(result ? 'Shared successfully' : 'Failed to share');
}

分享到 Instagram

void shareToInstagram() async {
  bool result = await SocialNetworkShare.shareOnInstagram(
    filePath: '/path/to/image.jpg',  // 本地图片路径
    description: 'Check out this awesome image!',
  );
  print(result ? 'Shared successfully' : 'Failed to share');
}

4. 处理权限

在某些情况下,分享功能可能需要特定的权限(例如访问文件系统)。确保在 AndroidManifest.xmlInfo.plist 中添加必要的权限。

Android

AndroidManifest.xml 中添加以下权限:

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

iOS

Info.plist 中添加以下权限:

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

5. 运行应用

现在,你可以在应用中调用这些分享方法,并测试它们是否正常工作。

6. 处理错误

确保在调用分享方法时处理可能的错误。例如,如果用户没有安装相应的应用程序,分享操作可能会失败。

void shareToFacebook() async {
  try {
    bool result = await SocialNetworkShare.shareOnFacebook(
      url: 'https://example.com',
      quote: 'Check out this awesome website!',
    );
    print(result ? 'Shared successfully' : 'Failed to share');
  } catch (e) {
    print('Error: $e');
  }
}
回到顶部