Flutter 三方库 share_plus 鸿蒙化分享功能实战
share_plus是 Flutter 生态中用于实现内容分享的常用插件,支持分享文本、链接、文件等到其他应用。本文基于 OpenHarmony TPC 仓库的适配版本,详细讲解 share_plus 在鸿蒙项目中的接入流程、核心 API 使用及常见问题排查,并附真实设备运行截图验证。
·
欢迎加入开源鸿蒙跨平台社区: https://openharmonycrossplatform.csdn.net
Flutter 三方库 share_plus 鸿蒙化分享功能实战
摘要
share_plus 是 Flutter 生态中用于实现内容分享的常用插件,支持分享文本、链接、文件等到其他应用。本文基于 OpenHarmony TPC 仓库的适配版本,详细讲解 share_plus 在鸿蒙项目中的接入流程、核心 API 使用及常见问题排查,并附真实设备运行截图验证。
核心要点:
- 掌握分享文本和链接
- 实现文件分享
- 配置分享面板
一、分享功能架构
二、参考来源
| 资源名称 | 链接 |
|---|---|
| OpenHarmony TPC Flutter 仓库 | AtomGit |
| share_plus pub.dev | share_plus |
三、接入步骤
3.1 配置 pubspec.yaml
dependencies:
flutter:
sdk: flutter
share_plus:
git:
url: https://atomgit.com/openharmony-tpc/flutter_packages.git
path: packages/share_plus/share_plus
3.2 核心代码示例
import 'package:share_plus/share_plus.dart';
class ShareService {
// 分享文本
Future<void> shareText(String text, {String? subject}) async {
await Share.share(text, subject: subject);
}
// 分享链接
Future<void> shareUrl(String url, {String? text}) async {
final shareText = text != null ? '$text\n$url' : url;
await Share.share(shareText);
}
// 分享单个文件
Future<void> shareFile({
required String filePath,
String? subject,
}) async {
await Share.shareXFiles(
[XFile(filePath)],
subject: subject,
);
}
// 分享多个文件
Future<void> shareFiles({
required List<String> filePaths,
String? text,
String? subject,
}) async {
final files = filePaths.map((path) => XFile(path)).toList();
await Share.shareXFiles(
files,
text: text,
subject: subject,
);
}
// 带主题的分享
Future<void> shareWithSubject({
required String text,
required String subject,
}) async {
await Share.share(text, subject: subject);
}
}
3.3 完整使用示例
import 'package:flutter/material.dart';
import 'package:share_plus/share_plus.dart';
class ShareDemo extends StatelessWidget {
final ShareService _shareService = ShareService();
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Share Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(Icons.share, size: 80, color: Colors.blue),
SizedBox(height: 20),
Text(
'分享功能演示',
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
SizedBox(height: 32),
ElevatedButton.icon(
onPressed: () => _shareService.shareText(
'这是一段分享文本,来自 Flutter OpenHarmony 应用!',
),
icon: Icon(Icons.text_fields),
label: Text('分享文本'),
),
SizedBox(height: 16),
ElevatedButton.icon(
onPressed: () => _shareService.shareUrl(
'https://openharmony.cn',
text: '开源鸿蒙官网',
),
icon: Icon(Icons.link),
label: Text('分享链接'),
),
SizedBox(height: 16),
ElevatedButton.icon(
onPressed: () => _shareService.shareWithSubject(
text: '欢迎访问开源鸿蒙社区!',
subject: '开源鸿蒙邀请函',
),
icon: Icon(Icons mail),
label: Text('分享带主题内容'),
),
SizedBox(height: 16),
ElevatedButton.icon(
onPressed: () => _shareService.shareText(
'欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net',
),
icon: Icon(Icons.group),
label: Text('分享社区链接'),
),
],
),
),
);
}
}
四、验证步骤
| 步骤 | 验证内容 | 预期结果 |
|---|---|---|
| Step 1 | 分享文本 | 打开分享面板 |
| Step 2 | 分享链接 | 链接正确显示 |
| Step 3 | 分享文件 | 文件被附加 |
| Step 4 | 取消分享 | 返回应用 |
五、常见问题排查
| 现象 | 根因 | 处理方式 |
|---|---|---|
| 分享面板不显示 | 无可分享应用 | 检查设备应用列表 |
| 文件分享失败 | 文件路径错误 | 检查文件是否存在 |
| 文本为空 | 参数传递错误 | 检查分享文本内容 |
六、运行成功截图
分享功能演示

复制到剪贴板中的内容

七、总结
share_plus 是实现社交分享功能的核心插件,在 OpenHarmony 平台上的适配完善。通过分享功能,用户可以将应用内容快速分享到其他平台,是社交类应用的必备工具。
附录:Schema.org 结构化数据
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "Flutter 三方库 share_plus 鸿蒙化分享功能实战",
"description": "基于 OpenHarmony TPC 仓库,详细讲解 share_plus 在鸿蒙项目中的接入流程、文本分享与文件分享功能实现。",
"author": { "@type": "Person", "name": "OpenHarmony 跨平台开发者" },
"publisher": { "@type": "Organization", "name": "OpenHarmony 跨平台社区", "url": "https://openharmonycrossplatform.csdn.net" },
"datePublished": "2026-05-07",
"dateModified": "2026-05-07",
"mainEntityOfPage": "https://openharmonycrossplatform.csdn.net",
"keywords": ["开源鸿蒙", "OpenHarmony", "Flutter for OpenHarmony", "share_plus", "分享功能", "三方库适配"],
"inLanguage": "zh-CN"
}
</script>
更多推荐

所有评论(0)