一、为什么选择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会自动压缩大图,建议先本地处理超清图片