You need to enable JavaScript to run this app. Flutter如何借助插件实现向WhatsApp指定号码发送文件的功能
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何借助插件实现向WhatsApp指定号码发送文件的功能

方案说明

你当前使用url_launcher调用WhatsApp公开deeplink的方式仅支持传递文本参数,WhatsApp官方未开放支持传文件路径的deeplink规则,因此无法通过该方案实现文件发送,可通过以下两种可行方案实现需求:

方案1:使用whatsapp_share包实现(支持指定收件人手机号+发送文件)

该封装包底层调用了WhatsApp的原生分享接口,同时支持填充手机号、文本、文件三类参数,是目前匹配需求的最优解:

  1. 首先在pubspec.yaml中添加依赖:
dependencies:
  whatsapp_share: ^2.0.2
  path_provider: ^2.1.0 # 用于获取本地文件存储路径
  1. 功能实现示例代码:
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可选联系人,可以用该方案:

  1. 在pubspec.yaml中添加依赖:
dependencies:
  share_plus: ^7.2.1
  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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 08:06:05