Flutter社交分享插件share_pro的使用

Flutter社交分享插件share_pro的使用

share_pro 是一个能够让 Flutter 应用在 Android 和 iOS 平台上无缝分享文本内容的插件。它具有简单的 API 和对空安全的支持,使在 Flutter 应用中实现分享功能变得简单。

特性

  • 📱 跨平台支持(Android & iOS)
  • 📝 分享文本内容到其他应用
  • ✨ 简单直观的 API
  • 🛡️ 支持空安全
  • 🚀 极少的设置需求

平台支持

Android iOS

需求

  • Android: minSdkVersion 21
  • iOS: iOS 11.0 或更高版本
  • Flutter: 3.3.0 或更高版本

安装

pubspec.yaml 文件中添加以下依赖:

dependencies:
  share_pro: ^1.0.1

然后运行 flutter pub get 来获取依赖。

使用

1. 导入包

import 'package:share_pro/share_pro.dart';

2. 在代码中使用

final sharePro = SharePro();

// 分享文本内容
try {
  final result = await sharePro.share('Hello World!');
  
  switch (result) {
    case ShareResult.shared:
      print('内容已成功分享');
      break;
    case ShareResult.cancelled:
      print('用户取消了分享');
      break;
    case ShareResult.error:
      print('分享操作失败');
      break;
  }
} catch (e) {
  print('错误: $e');
}

平台配置

Android

AndroidManifest.xml 中添加以下内容:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.navaghan.share_pro">
    <queries>
        <intent>
            <action android:name="android.intent.action.SEND" />
            <data android:mimeType="text/plain" />
        </intent>
    </queries>
</manifest>

iOS

无需额外配置。

示例

查看 示例目录 中的完整示例应用。

许可证

该项目采用 MIT 许可证。详情请参阅 LICENSE 文件。

问题与反馈

请在 问题跟踪器 中提交具体的问题、错误或功能请求。

贡献

欢迎贡献!请阅读我们的 贡献指南 开始贡献。


以下是完整的示例代码:

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

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

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

class _MyAppState extends State<MyApp> {
  final _sharePro = SharePro();
  final TextEditingController _textController = TextEditingController();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Share Pro 示例'),
        ),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: [
              TextField(
                controller: _textController,
                decoration: const InputDecoration(
                  labelText: '输入要分享的文本',
                  border: OutlineInputBorder(),
                ),
                maxLines: 3,
              ),
              const SizedBox(height: 20),
              
              // 分享文本按钮
              ElevatedButton(
                onPressed: () async {
                  try {
                    await _sharePro.share(_textController.text);
                  } catch (e) {
                    _showError('分享文本时出错: $e');
                  }
                },
                child: const Text('分享文本'),
              ),
              
              const SizedBox(height: 12),
              
              // 分享 URL 按钮
              ElevatedButton(
                onPressed: () async {
                  try {
                    await _sharePro.share('Check out Flutter!');
                  } catch (e) {
                    _showError('分享 URL 时出错: $e');
                  }
                },
                child: const Text('分享 URL'),
              ),
              
              const SizedBox(height: 12),
              
              // 分享文件按钮(模拟)
              ElevatedButton(
                onPressed: () async {
                  try {
                    // 注意:在实际应用中,你需要获取实际的文件路径
                    List<String> filePaths = [
                      '/path/to/image.jpg',
                      '/path/to/document.pdf'
                    ];
                    // WORKING ON IT
                  } catch (e) {
                    _showError('分享文件时出错: $e');
                  }
                },
                child: const Text('分享文件'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _showError(String message) {
    // 使用 Snackbar 显示错误信息
    if (mounted) {
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text(message),
          backgroundColor: Colors.red,
        ),
      );
    }
  }

  [@override](/user/override)
  void dispose() {
    _textController.dispose();
    super.dispose();
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用share_pro插件来实现社交分享的示例代码。share_pro是一个功能强大的Flutter插件,支持多种社交媒体平台的分享功能。

首先,你需要在你的pubspec.yaml文件中添加share_pro依赖:

dependencies:
  flutter:
    sdk: flutter
  share_pro: ^latest_version  # 请替换为实际的最新版本号

然后运行flutter pub get来获取依赖。

接下来,你可以在你的Flutter应用中导入并使用share_pro插件。以下是一个简单的示例,展示如何使用该插件进行文本和图片的分享:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Share Pro Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: _shareText,
                child: Text('Share Text'),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: _shareImage,
                child: Text('Share Image'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _shareText() async {
    final RenderRepaintBoundary boundary =
        globalKey.currentState.context.findRenderObject();
    final ui.Image image = await boundary.toImage();
    final byteData = await image.toByteData(format: ui.ImageByteFormat.png);
    final Uint8List pngBytes = byteData!.buffer.asUint8List();

    // Share text only
    SharePro.share(
      text: 'Hello, this is a text share example!',
      subject: 'Share Subject',
      // image: pngBytes, // Uncomment if you want to share an image along with text (not all platforms support this)
    );
  }

  void _shareImage() async {
    final picker = ImagePicker();
    final pickedFile = await picker.pickImage(source: ImageSource.gallery);

    if (pickedFile != null) {
      File file = File(pickedFile.path);
      List<int> imageBytes = await file.readAsBytes();

      // Share image only
      SharePro.share(
        image: imageBytes,
        text: 'Sharing an image!', // Some platforms may ignore this text when sharing images
      );
    }
  }

  final GlobalKey _globalKey = GlobalKey(); // This key is used for capturing screenshots, not necessary for simple text shares
}

注意

  1. 在上面的代码中,_shareText函数演示了如何仅分享文本。如果你想要同时分享图片和文本,可以取消注释image: pngBytes行,但请注意,并非所有平台都支持同时分享图片和文本。
  2. _shareImage函数演示了如何从图库中选择一张图片并进行分享。这里使用了image_picker插件来获取图片,你需要在pubspec.yaml中添加image_picker依赖。

添加image_picker依赖:

dependencies:
  flutter:
    sdk: flutter
  share_pro: ^latest_version  # 请替换为实际的最新版本号
  image_picker: ^latest_version  # 请替换为实际的最新版本号

运行flutter pub get后,你可以使用image_picker来选择图片。

希望这个示例代码能帮助你理解如何在Flutter项目中使用share_pro插件进行社交分享。

回到顶部