Flutter如何借助插件实现向WhatsApp指定号码发送文件的功能
方案说明
你当前使用url_launcher调用WhatsApp公开deeplink的方式仅支持传递文本参数,WhatsApp官方未开放支持传文件路径的deeplink规则,因此无法通过该方案实现文件发送,可通过以下两种可行方案实现需求:
方案1:使用whatsapp_share包实现(支持指定收件人手机号+发送文件)
该封装包底层调用了WhatsApp的原生分享接口,同时支持填充手机号、文本、文件三类参数,是目前匹配需求的最优解:
- 首先在
pubspec.yaml中添加依赖:
dependencies: whatsapp_share: ^2.0.2 path_provider: ^2.1.0 # 用于获取本地文件存储路径
- 功能实现示例代码:
import 'package:whatsapp_share/whatsapp_share.dart'; import 'dart:io'; class WhatsAppService { Future<void> sendFileToSpecifiedContact({ required String phone, // 注意手机号需带国家码,无需加+前缀,例:中国手机号填8613xxxxxxxxx required String text, required File sendFile, required String fileType, // 可选枚举值:image、video、document }) async { // 先校验设备是否安装WhatsApp bool isWhatsAppInstalled = await WhatsappShare.isInstalled(package: Package.whatsapp); if (!isWhatsAppInstalled) { throw Exception("设备未安装WhatsApp应用"); } // 调用分享接口 await WhatsappShare.shareFile( phone: phone, text: text, filePath: [sendFile.path], fileType: fileType, ); } }
方案2:使用share_plus包调用系统分享(不支持自动填充指定手机号)
如果不需要强制指定收件人,仅需要将文件分享到WhatsApp可选联系人,可以用该方案:
- 在
pubspec.yaml中添加依赖:
dependencies: share_plus: ^7.2.1
- 功能实现示例代码:
import 'package:share_plus/share_plus.dart'; import 'dart:io'; Future<void> shareFileToWhatsApp(File file, String shareText) async { await Share.shareXFiles( [XFile(file.path)], text: shareText, ); }
该方案会弹出系统分享面板,用户手动选择WhatsApp后再选定收件人发送即可。
内容的提问来源于stack exchange,提问作者Rontu Barhoi
相关产品推荐
相关产品推荐

