Flutter中如何使用share插件实现向选定应用分享邀请好友消息
Flutter 使用分享类插件实现指定应用发送邀请消息的方案
目前社区主流使用的是share_plus插件,是原官方share插件的升级迭代版本,完全兼容原插件核心API,实现步骤如下:
1. 添加依赖
在项目的pubspec.yaml文件中添加依赖:
dependencies: flutter: sdk: flutter share_plus: ^7.2.2 # 可替换为当前最新稳定版本 # 若需要实现iOS端直接拉起指定应用,额外添加以下依赖 url_launcher: ^6.2.2
添加后执行flutter pub get完成依赖安装。
2. 平台配置
安卓端配置
在android/app/src/main/AndroidManifest.xml中添加权限配置:
<!-- 用于检测目标应用是否已安装 --> <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" android:maxSdkVersion="33" />
如果需要分享本地图片/文件,还需要额外配置FileProvider,纯文本分享可跳过该步骤。
iOS端配置
在ios/Runner/Info.plist的dict节点下添加目标应用的白名单:
<key>LSApplicationQueriesSchemes</key> <array> <!-- 示例为微信、QQ的Scheme,可根据你要指定的应用替换对应值 --> <string>weixin</string> <string>mqq</string> </array>
3. 核心代码实现
基础分享(调用系统分享面板选择应用)
import 'package:share_plus/share_plus.dart'; // 调用分享的函数 void shareInviteMessage() { const String inviteText = "我发现了一款超好用的聊天APP,快来加入和我聊天吧~ 下载链接:xxx"; Share.share(inviteText); }
跳过系统面板,直接指定应用分享
import 'package:share_plus/share_plus.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:flutter/services.dart'; import 'dart:io' show Platform; void shareToTargetApp() async { const String inviteText = "我发现了一款超好用的聊天APP,快来加入和我聊天吧~ 下载链接:xxx"; try { if (Platform.isAndroid) { // 安卓端传入目标应用的包名,示例为微信包名 await Share.share( inviteText, extra: {"package": "com.tencent.mm"}, ); } else if (Platform.isIOS) { // iOS端通过URL Scheme拉起目标应用 final url = Uri.parse("weixin://send?text=${Uri.encodeComponent(inviteText)}"); if (await canLaunchUrl(url)) { await launchUrl(url); } else { // 未安装目标应用的兜底逻辑 print("未安装对应应用,请先安装后再尝试分享"); } } } on PlatformException catch (e) { // 分享失败的异常处理 print("分享失败:${e.message}"); } }
注意事项
- 不同应用的安卓包名、iOS的URL Scheme需要自行查询对应应用开放平台文档获取
- 若用户未安装指定的目标应用,需要做友好提示,避免出现无响应的情况
- 如果需要分享图片、文件等其他类型内容,调整
share_plus的入参即可实现
内容的提问来源于stack exchange,提问作者Bhavika
相关产品推荐
相关产品推荐

