鸿蒙flutter第三方库适配 - 文本分享
文本分享应用
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
适配的第三方库地址:
https://pub.dev/packages/share_plus
一、项目概述
运行效果图





1.1 应用简介
文本分享应用是一款便捷实用的文本内容分享工具,让用户能够快速将文本内容分享到各种社交平台、即时通讯软件或其他应用程序。应用采用清新的绿色为主色调,象征分享与传递。涵盖文本编辑、模板选择、历史记录三大核心模块,用户可以自由编辑文本、使用预设模板、查看分享历史,实现高效的文本分享体验。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 文本编辑 | 输入和编辑要分享的文本内容 | TextField |
| 一键分享 | 快速分享文本到其他应用 | share_plus |
| 模板管理 | 预设文本模板快速使用 | 本地存储 |
| 历史记录 | 保存分享历史便于查看 | SharedPreferences |
| 分类模板 | 按类别组织文本模板 | 数据模型 |
| 快捷操作 | 清空文本、快速重发 | 按钮交互 |
1.3 模板分类定义
| 序号 | 分类名称 | Emoji | 描述 | 模板数量 |
|---|---|---|---|---|
| 1 | 问候 | 👋 | 日常问候类文本 | 2个 |
| 2 | 祝福 | 🎉 | 节日祝福类文本 | 2个 |
| 3 | 感谢 | 🙏 | 感谢表达类文本 | 1个 |
| 4 | 鼓励 | 💪 | 加油鼓励类文本 | 1个 |
| 5 | 道歉 | 😔 | 道歉表达类文本 | 1个 |
1.4 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 分享功能 | share_plus | >= 10.0.0 |
| 数据存储 | SharedPreferences | >= 2.0.0 |
| 目标平台 | 鸿蒙OS / Web / Android / iOS | API 21+ |
1.5 项目结构
lib/
└── main_text_share.dart
├── TextShareApp # 应用入口
├── TextTemplate # 文本模板模型
├── TextShareHomePage # 主页面(底部导航)
├── _buildSharePage # 分享页面
├── _buildTemplatesPage # 模板页面
├── _buildHistoryPage # 历史页面
├── _buildQuickTemplateCard # 快捷模板卡片
├── _buildTemplateCard # 模板卡片
└── _buildTipItem # 提示项
二、系统架构
2.1 整体架构图
2.2 类图设计
2.3 页面导航流程
2.4 分享流程
三、核心模块设计
3.1 数据模型设计
3.1.1 文本模板模型 (TextTemplate)
class TextTemplate {
final String id;
final String title;
final String emoji;
final String content;
final String category;
const TextTemplate({
required this.id,
required this.title,
required this.emoji,
required this.content,
required this.category,
});
}
3.1.2 模板分类分布
3.2 页面结构设计
3.2.1 主页面布局
3.2.2 分享页结构
3.2.3 模板页结构
3.2.4 历史页结构
3.3 分享逻辑流程
3.4 历史记录管理
四、UI设计规范
4.1 配色方案
应用以清新的绿色为主色调,象征分享与传递:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #4CAF50 (Green) | 导航、主题元素 |
| 辅助色 | #81C784 | 卡片背景 |
| 第三色 | #A5D6A7 | 次要元素 |
| 强调色 | #C8E6C9 | 高亮背景 |
| 背景色 | #FAFAFA | 页面背景 |
| 卡片背景 | #FFFFFF | 信息卡片 |
| 成功色 | #4CAF50 | 操作成功 |
| 警告色 | #FF9800 | 删除警告 |
4.2 字体规范
| 元素 | 字号 | 字重 | 颜色 |
|---|---|---|---|
| 页面标题 | 20px | Bold | 主色 |
| 卡片标题 | 16px | Bold | #000000 |
| 正文内容 | 14px | Regular | #000000 |
| 提示文字 | 12px | Regular | #666666 |
| 按钮文字 | 14px | Medium | 主色 |
4.3 组件规范
4.3.1 文本输入卡片
┌─────────────────────────────────────┐
│ ✏️ 输入分享内容 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 请输入要分享的文本内容... │ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────┘ │
│ │
│ [清空] [分享文本 📤] │
└─────────────────────────────────────┘
4.3.2 快捷模板卡片
┌─────────────────────────────────────┐
│ 快捷模板 │
│ │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 👋 │ │ 🎂 │ │ 🙏 │ │ 🌙 │ │
│ │问候 │ │生日 │ │感谢 │ │晚安 │ │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
└─────────────────────────────────────┘
4.3.3 模板卡片
┌─────────────────────────────────────┐
│ 问候 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 👋 日常问候 [+] │ │
│ │ 你好呀!今天天气真不错... │ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ ☀️ 早安问候 [+] │ │
│ │ 早安!新的一天开始了... │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
4.3.4 历史记录卡片
┌─────────────────────────────────────┐
│ 分享历史 [清空] │
│ │
│ ┌─────────────────────────────┐ │
│ │ 📄 你好呀!今天天气真不错... │ │
│ │ [编辑][分享]│ │
│ └─────────────────────────────┘ │
│ │
│ ┌─────────────────────────────┐ │
│ │ 📄 祝你生日快乐!愿你心想... │ │
│ │ [编辑][分享]│ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
五、核心功能实现
5.1 分享功能实现
Future<void> _shareText() async {
final text = _textController.text.trim();
if (text.isEmpty) {
_showSnackBar('请输入要分享的文本内容');
return;
}
try {
await Share.share(text, subject: '分享文本');
_shareHistory.insert(0, text);
if (_shareHistory.length > 50) {
_shareHistory = _shareHistory.sublist(0, 50);
}
await _saveHistory();
_showSnackBar('分享成功!');
} catch (e) {
_showSnackBar('分享失败: $e');
}
}
5.2 模板管理实现
void _initTemplates() {
_templates = [
TextTemplate(
id: '1',
title: '日常问候',
emoji: '👋',
content: '你好呀!今天天气真不错,希望你有美好的一天!',
category: '问候',
),
// ... 更多模板
];
}
void _useTemplate(TextTemplate template) {
_textController.text = template.content;
_showSnackBar('已应用模板: ${template.title}');
}
5.3 历史记录实现
Future<void> _saveHistory() async {
try {
if (_prefs != null) {
final historyJson = jsonEncode(_shareHistory);
await _prefs?.setString(_historyKey, historyJson);
}
} catch (e) {
debugPrint('保存历史记录失败: $e');
}
}
Future<void> _initializeData() async {
try {
_prefs = await SharedPreferences.getInstance();
final historyJson = _prefs?.getString(_historyKey);
if (historyJson != null) {
final List<dynamic> decoded = jsonDecode(historyJson);
_shareHistory = decoded.cast<String>();
}
} catch (e) {
_shareHistory = [];
}
setState(() {
_isLoading = false;
});
}
5.4 滑动删除实现
Dismissible(
key: Key('history_$index'),
direction: DismissDirection.endToStart,
onDismissed: (direction) {
_deleteHistory(index);
},
background: Container(
alignment: Alignment.centerRight,
padding: const EdgeInsets.only(right: 16),
color: colorScheme.errorContainer,
child: Icon(
Icons.delete,
color: colorScheme.onErrorContainer,
),
),
child: Card(
// 卡片内容
),
)
六、交互设计
6.1 分享流程
6.2 模板使用流程
6.3 历史记录操作流程
七、扩展功能规划
7.1 后续版本规划
7.2 功能扩展建议
7.2.1 自定义模板
编辑功能:
- 创建个性化模板
- 编辑模板内容
- 设置模板分类
- 删除自定义模板
7.2.2 云端同步
同步功能:
- 跨设备同步历史
- 云端备份模板
- 数据恢复功能
- 账号关联管理
7.2.3 高级分享
分享功能:
- 富文本分享
- 图片+文本分享
- 定时分享
- 批量分享
八、注意事项
8.1 开发注意事项
-
权限配置:确保分享权限正确配置
-
平台适配:不同平台分享行为可能不同
-
文本长度:注意各平台文本长度限制
-
历史管理:合理控制历史记录数量
-
用户体验:提供清晰的操作反馈
8.2 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 分享失败 | 未配置权限 | 检查平台权限配置 |
| 历史丢失 | 存储异常 | 检查SharedPreferences |
| 模板不显示 | 数据未加载 | 确保初始化完成 |
| 中文乱码 | 编码问题 | 使用UTF-8编码 |
| 分享无响应 | 系统限制 | 检查系统分享设置 |
8.3 使用技巧
📱 文本分享应用技巧 📱
分享准备
- 提前编辑好常用文本
- 使用模板提高效率
- 定期清理历史记录
- 选择合适的分享方式
模板使用
- 按分类快速查找
- 自定义个性化模板
- 复制模板后编辑
- 收藏常用模板
历史管理
- 滑动快速删除
- 长按批量操作
- 定期备份重要内容
- 利用搜索快速定位
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| share_plus | >= 10.0.0 |
| shared_preferences | >= 2.0.0 |
| 目标平台 | 鸿蒙OS / Web / Android / iOS |
9.2 依赖安装
# 安装依赖
flutter pub get
# 或使用 flutter pub add
flutter pub add share_plus
flutter pub add shared_preferences
9.3 运行命令
# 查看可用设备
flutter devices
# 运行到Web服务器
flutter run -d web-server -t lib/main_text_share.dart --web-port 8145
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 -t lib/main_text_share.dart
# 运行到Android设备
flutter run -d android -t lib/main_text_share.dart
# 代码分析
flutter analyze lib/main_text_share.dart
9.4 权限配置
Android (android/app/src/main/AndroidManifest.xml):
<uses-permission android:name="android.permission.INTERNET"/>
iOS (ios/Runner/Info.plist):
<key>LSApplicationQueriesSchemes</key>
<array>
<string>weixin</string>
<string>mqq</string>
</array>
十、总结
文本分享应用通过 share_plus 库实现了便捷的文本内容分享功能。应用支持文本编辑、模板选择、历史记录三大核心功能,用户可以快速将文本内容分享到各种社交平台和应用程序。
应用采用 Material Design 3 设计规范,以清新的绿色为主色调,象征分享与传递。预设了问候、祝福、感谢、鼓励、道歉五大类共八个文本模板,方便用户快速使用。分享历史自动保存,最多保留50条记录,支持滑动删除和快速重发操作。
通过本应用,用户可以高效地进行文本分享,无论是日常问候、节日祝福还是感谢表达,都能一键完成,让分享变得更加简单便捷。
文本分享——让分享变得简单
更多推荐


所有评论(0)