文本分享应用


欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net

适配的第三方库地址:
https://pub.dev/packages/share_plus

一、项目概述

运行效果图

image-20260411220205764

image-20260411220217413

image-20260411220222132

image-20260411220226874

image-20260411220235078

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 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
TextShareHomePage

分享页

模板页

历史页

文本输入

快捷模板

分享按钮

分类模板

模板卡片

历史列表

历史操作

分享管理器
ShareManager

模板管理器
TemplateManager

历史管理器
HistoryManager

TextTemplate
文本模板

ShareHistory
分享历史

SharedPreferences
本地存储

2.2 类图设计

uses

stores

calls

TextShareApp

+Widget build()

TextTemplate

+String id

+String title

+String emoji

+String content

+String category

TextShareHomePage

-TextEditingController _textController

-List<String> _shareHistory

-List<TextTemplate> _templates

-int _currentIndex

+void _shareText()

+void _useTemplate()

+void _clearText()

+void _deleteHistory()

+void _clearHistory()

SharedPreferences

+Future<bool> setString()

+String? getString()

Share

+static Future<void> share()

2.3 页面导航流程

分享

模板

历史

编辑

分享

删除

应用启动

分享页面

底部导航

模板页面

历史页面

输入文本

点击分享

选择分享方式

分享完成

保存历史

选择模板

应用模板

查看历史

操作选择

删除记录

2.4 分享流程

系统 SharePlus 分享页 用户 系统 SharePlus 分享页 用户 输入文本内容 验证文本非空 点击分享按钮 调用分享方法 弹出分享选择器 显示分享选项 选择目标应用 执行分享操作 分享完成回调 返回分享结果 保存分享历史 显示成功提示

三、核心模块设计

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 模板分类分布
29% 29% 14% 14% 14% 模板分类分布 问候 祝福 感谢 鼓励 道歉

3.2 页面结构设计

3.2.1 主页面布局

TextShareHomePage

IndexedStack

分享页

模板页

历史页

NavigationBar

分享 Tab

模板 Tab

历史 Tab

3.2.2 分享页结构

分享页

文本输入卡片

快捷模板列表

使用提示

输入框

清空按钮

分享按钮

横向滚动模板

使用说明列表

3.2.3 模板页结构

模板页

分类标题

模板卡片列表

模板卡片

Emoji图标

模板标题

模板内容

应用按钮

3.2.4 历史页结构

历史页

标题栏

历史列表

空状态提示

清空按钮

历史卡片

文本预览

编辑按钮

分享按钮

空状态图标

提示文字

3.3 分享逻辑流程

微信

QQ

短信

其他

开始分享

文本是否为空?

提示输入文本

调用Share.share

系统分享选择器

用户选择

分享到微信

分享到QQ

分享到短信

分享到其他应用

分享完成

保存到历史记录

显示成功提示

3.4 历史记录管理

分享成功

插入历史列表头部

历史数量>50?

删除最旧记录

保持不变

保存到SharedPreferences

JSON序列化

持久化存储

下次启动加载

JSON反序列化

恢复历史列表


四、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 分享流程

目标应用 SharePlus 应用 用户 目标应用 SharePlus 应用 用户 打开应用 显示分享页面 输入文本内容 点击分享按钮 Share.share(text) 显示分享选择器 选择目标应用 传递文本内容 显示分享内容 保存分享历史 显示成功提示

6.2 模板使用流程

打开模板页

浏览分类

选择模板

点击应用按钮

文本填充到输入框

切换到分享页

编辑或直接分享

6.3 历史记录操作流程

点击编辑

点击分享

滑动删除

跳转

查看历史

编辑文本

快速分享

删除记录

分享页

分享选择器

确认删除


七、扩展功能规划

7.1 后续版本规划

2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 基础UI框架 分享功能实现 模板系统开发 历史记录管理 自定义模板 分类优化 云端同步 多语言支持 主题定制 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 文本分享应用开发计划

7.2 功能扩展建议

7.2.1 自定义模板

编辑功能:

  • 创建个性化模板
  • 编辑模板内容
  • 设置模板分类
  • 删除自定义模板
7.2.2 云端同步

同步功能:

  • 跨设备同步历史
  • 云端备份模板
  • 数据恢复功能
  • 账号关联管理
7.2.3 高级分享

分享功能:

  • 富文本分享
  • 图片+文本分享
  • 定时分享
  • 批量分享

八、注意事项

8.1 开发注意事项

  1. 权限配置:确保分享权限正确配置

  2. 平台适配:不同平台分享行为可能不同

  3. 文本长度:注意各平台文本长度限制

  4. 历史管理:合理控制历史记录数量

  5. 用户体验:提供清晰的操作反馈

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条记录,支持滑动删除和快速重发操作。

通过本应用,用户可以高效地进行文本分享,无论是日常问候、节日祝福还是感谢表达,都能一键完成,让分享变得更加简单便捷。

文本分享——让分享变得简单


Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐