Flutter每日库: share_plus快速分享插件

124 阅读1分钟

一、为什么选择share_plus?

share_plus作为Flutter官方推荐的分享插件,具备以下优势: ✅ 跨平台支持:完美兼容Android/iOS系统 ✅ 极简API:三行代码实现分享逻辑 ✅ 多类型支持:文本、图片、文件一站式集成 ✅ 自动适配:智能识别设备已安装的可分享应用


二、开发环境搭建

1. 添加依赖

pubspec.yaml中添加最新版插件

dependencies:
  share_plus: ^7.0.1
  image_picker: ^1.0.4 # 图片选择需要

2. iOS权限配置

ios/Runner/Info.plist中添加相册访问权限(图片分享需要):

<key>NSPhotoLibraryUsageDescription</key>
<string>需要相册权限以选择分享图片</string>

三、文本分享三步曲

import 'package:share_plus/share_plus.dart';
​
// 文本分享
final result = await SharePlus.instance.share(
    ShareParams(
        text: 'text'
    )
);
if (result.status == ShareResultStatus.success) {
  debugPrint('分享成功');
} else {
  debugPrint('result.status = ${result.status}');
}

代码解析

  • subject参数用于设置邮件/短信等场景的主题
  • ShareResultStatus包含success/dismissed/unavailable三种状态
  • 支持同时分享文本+URL链接

四、图片分享实战指南

1. 选择图片文件

final ImagePicker _picker = ImagePicker();
​
// 从相册选取单张图片
XFile? imageFile = await _picker.pickImage(
  source: ImageSource.gallery,
  maxWidth: 1080, // 控制图片质量
  imageQuality: 85,
);
​
if (imageFile == null) return; // 用户取消选择

2. 执行分享操作

final result = await Share.shareXFiles(
  [XFile(imageFile.path)], 
  text: '看看我刚拍的美图',
  subject: '图片分享',
  sharePositionOrigin: Rect.fromPoints(
    Offset.zero, 
    Size(300, 300).bottomRight(Offset.zero)
  ) // 控制分享弹窗位置(Android特有)
);

高阶技巧

  • 使用shareXFiles支持多图分享(传入XFile列表)
  • 通过sharePositionOrigin指定Android分享弹窗位置
  • iOS会自动压缩大图,建议先本地处理超清图片