废话生成器应用
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
一、项目概述
运行效果图






1.1 应用简介
废话生成器是一款专为职场人士打造的"专业废话"生成工具,核心定位在于帮助用户快速生成各类工作汇报、周报月报、项目总结等场景下的"标准话术"。这款应用深谙职场沟通的艺术------说了很多,又好像什么都没说。
应用采用"场景模板+语气词库"的策略实现内容生成,内置6套场景模板,每套模板包含开头、中间、结尾三部分,配合4种语气风格,理论组合数约648种变体。用户只需选择场景、设定语气、输入主题,即可获得专属的职场废话,支持历史记录和模板库功能。
1.2 核心功能
| 功能模块 | 功能描述 | 实现方式 |
|---|---|---|
| 场景选择 | 6大场景覆盖 | ChoiceChip组件 |
| 语气设定 | 4种风格切换 | FilterChip组件 |
| 长度控制 | 4档字数选择 | SegmentedButton |
| 内容生成 | 模板替换算法 | Map数据结构 |
| 一键复制 | 剪贴板操作 | SnackBar反馈 |
| 模板库 | 6套预设模板 | 静态数据配置 |
| 历史记录 | 生成内容存档 | 内存存储 |
1.3 场景与语气
| 场景 | 图标 | 适用情境 |
|---|---|---|
| 周报 | 📅 | 每周工作总结 |
| 月报 | 📊 | 月度工作汇报 |
| 年终总结 | 📝 | 年度工作回顾 |
| 项目汇报 | 📋 | 项目进展报告 |
| 述职报告 | 🎤 | 个人工作述职 |
| 会议纪要 | 👥 | 会议内容记录 |
| 语气 | 特色词汇 | 适用场景 |
|---|---|---|
| 正式 | 系统性、全方位、多维度 | 正式汇报场合 |
| 轻松 | 挺不错、还可以、蛮好的 | 内部沟通场景 |
| 鸡血 | 全力以赴、攻坚克难、勇攀高峰 | 激励型汇报 |
| 佛系 | 随缘、淡定、从容、水到渠成 | 轻松氛围场景 |
1.4 技术栈
| 技术领域 | 技术选型 | 版本要求 |
|---|---|---|
| 开发框架 | Flutter | >= 3.0.0 |
| 编程语言 | Dart | >= 2.17.0 |
| 设计规范 | Material Design 3 | - |
| 状态管理 | setState | - |
| 目标平台 | 鸿蒙OS | API 21+ |
1.5 项目结构
lib/
└── main_nonsense.dart
├── NonsenseGeneratorApp # 应用入口
├── MainScreen # 主屏幕(底部导航)
├── GeneratePage # 生成页面
├── TemplatePage # 模板库页面
├── HistoryPage # 历史记录页面
├── SettingsPage # 设置页面
├── TemplateDetailSheet # 模板详情底部面板
├── HistoryCard # 历史记录卡片
├── HistoryDetailSheet # 历史详情底部面板
├── NonsenseItem # 数据模型
├── NonsenseGenerator # 废话生成器
└── NonsenseStorage # 存储管理器
二、系统架构
2.1 整体架构图
Data Layer
Business Logic
Presentation Layer
主页面
生成Tab
模板Tab
历史Tab
设置Tab
详情弹窗
内容展示
操作按钮
场景选择
语气设定
长度控制
主题输入
废话生成器
NonsenseGenerator
历史管理
addToHistory
模板管理
TemplatePage
NonsenseItem
数据模型
NonsenseStorage
存储管理
_history
历史列表
2.2 类图设计
contains
contains
contains
contains
uses
uses
creates
stores
NonsenseGeneratorApp
+Widget build()
NonsenseItem
+String id
+String topic
+String scene
+String tone
+String content
+String createdAt
NonsenseGenerator
+Map<String,Map> _templates
+Map<String,List> _buzzwords
+generate(topic, scene, tone, length) : String
NonsenseStorage
-List<NonsenseItem> _history
+List<NonsenseItem> history
+addToHistory(item)
+clearHistory()
GeneratePage
-TextEditingController _topicController
-String _selectedScene
-String _selectedTone
-int _selectedLength
-String? _generatedText
-bool _isGenerating
+Widget build()
-_generateNonsense()
-_copyToClipboard()
MainScreen
TemplatePage
HistoryPage
2.3 生成流程
NonsenseStorage NonsenseGenerator GeneratePage 用户 NonsenseStorage NonsenseGenerator GeneratePage 用户 loop [每100ms更新进度] 选择场景、语气、长度 输入主题关键词 点击生成按钮 校验输入非空 启动进度动画 更新_generationProgress generate(topic, scene, tone, length) 选择对应场景模板 随机选择开头/中间/结尾 替换{topic}占位符 根据语气插入特色词汇 调整文本长度 返回生成文本 addToHistory(item) 展示生成结果
三、核心模块设计
3.1 数据模型设计
3.1.1 废话条目模型 (NonsenseItem)
dart
class NonsenseItem {
final String id; // 唯一标识(时间戳)
final String topic; // 主题关键词
final String scene; // 使用场景
final String tone; // 语气风格
final String content; // 生成内容
final String createdAt; // 创建时间(yyyy-MM-dd HH:mm)
}
3.1.2 废话生成器 (NonsenseGenerator)
dart
class NonsenseGenerator {
static final Map<String, Map<String, List<String>>> _templates = {
'周报': {
'开头': [
'本周主要围绕{topic}展开工作,在团队协作方面取得显著进展。',
'过去一周,我们聚焦{topic},积极推进各项任务落地。',
'本周工作以{topic}为核心,整体进展顺利。',
],
'中间': [
'通过深度思考和持续优化,我们在{topic}方面形成了系统性的解决方案。',
'针对{topic},我们进行了多维度分析和全方位评估。',
'在{topic}的推进过程中,我们注重细节把控和质量管理。',
],
'结尾': [
'下周将继续深化{topic}相关工作,确保目标达成。',
'后续将持续关注{topic},推动项目稳步前进。',
'展望未来,我们将在{topic}领域持续发力,创造更大价值。',
],
},
// ... 其他场景模板
};
static final Map<String, List<String>> _buzzwords = {
'正式': ['系统性', '全方位', '多维度', '深层次', '高质量'],
'轻松': ['挺不错', '还可以', '蛮好的', '挺顺利', '基本OK'],
'鸡血': ['全力以赴', '攻坚克难', '勇攀高峰', '创造奇迹', '引领潮流'],
'佛系': ['随缘', '淡定', '从容', '平和', '顺其自然'],
};
static String generate({
required String topic,
required String scene,
required String tone,
required int length,
});
}
3.1.3 存储管理器 (NonsenseStorage)
dart
class NonsenseStorage {
static final List<NonsenseItem> _history = [];
static List<NonsenseItem> get history => List.unmodifiable(_history);
static void addToHistory(NonsenseItem item) {
_history.insert(0, item);
if (_history.length > 100) {
_history.removeLast();
}
}
static void clearHistory();
}
3.2 场景选择器
3.2.1 选择器设计
场景数据
ChoiceChip组
图标+文字
选中状态切换
更新_selectedScene
3.2.2 实现代码
dart
final List<Map<String, dynamic>> _scenes = [
{'name': '周报', 'icon': Icons.calendar_view_week},
{'name': '月报', 'icon': Icons.calendar_month},
{'name': '年终总结', 'icon': Icons.summarize},
{'name': '项目汇报', 'icon': Icons.assignment},
{'name': '述职报告', 'icon': Icons.record_voice_over},
{'name': '会议纪要', 'icon': Icons.groups},
];
Wrap(
spacing: 8,
runSpacing: 8,
children: _scenes.map((scene) {
final isSelected = _selectedScene == scene['name'];
return ChoiceChip(
avatar: Icon(scene['icon'], size: 18),
label: Text(scene['name']),
selected: isSelected,
onSelected: (selected) {
if (selected) {
setState(() {
_selectedScene = scene['name'];
});
}
},
);
}).toList(),
)
3.3 语气选择器
3.3.1 选择器设计
dart
final List<Map<String, dynamic>> _tones = [
{'name': '正式', 'desc': '严肃专业'},
{'name': '轻松', 'desc': '自然随和'},
{'name': '鸡血', 'desc': '激情澎湃'},
{'name': '佛系', 'desc': '淡定从容'},
];
Wrap(
spacing: 8,
runSpacing: 8,
children: _tones.map((tone) {
final isSelected = _selectedTone == tone['name'];
return FilterChip(
label: Text('${tone['name']} · ${tone['desc']}'),
selected: isSelected,
onSelected: (selected) {
if (selected) {
setState(() {
_selectedTone = tone['name'];
});
}
},
);
}).toList(),
)
3.4 长度控制器
3.4.1 分段按钮实现
dart
final List<int> _lengths = [100, 200, 500, 1000];
SegmentedButton<int>(
segments: _lengths.map((length) {
return ButtonSegment(
value: length,
label: Text('$length字'),
);
}).toList(),
selected: {_selectedLength},
onSelectionChanged: (selected) {
setState(() {
_selectedLength = selected.first;
});
},
)
3.5 模板库模块
3.5.1 模板列表
| 模板名称 | 适用场景 | 标签 |
|---|---|---|
| 周报万能模板 | 每周工作总结 | 周报、通用 |
| 项目延期说明 | 优雅解释延期 | 项目、延期 |
| 加薪申请话术 | 委婉加薪请求 | 加薪、沟通 |
| 会议纪要模板 | 快速生成纪要 | 会议、纪要 |
| 年终总结框架 | 年终总结结构 | 年终、总结 |
| 需求变更说明 | 应对需求变更 | 需求、变更 |
3.5.2 模板详情面板
dart
DraggableScrollableSheet(
initialChildSize: 0.7,
minChildSize: 0.5,
maxChildSize: 0.9,
builder: (context, scrollController) {
return TemplateDetailSheet(
template: template,
scrollController: scrollController,
);
},
)
四、UI设计规范
4.1 配色方案
应用采用浅色主题配合绿色主色调,营造专业清新的氛围:
| 颜色类型 | 色值 | 用途 |
|---|---|---|
| 主色 | #6B8E6B | AppBar、强调、按钮 |
| 背景色 | #FFFFFF | 纯白背景 |
| 表面色 | #F5F5F5 | 浅灰卡片背景 |
| 主容器色 | #E8F5E9 | 浅绿选中状态 |
| 次容器色 | #E0F2F1 | 浅青辅助色 |
4.2 字体规范
| 层级 | 字号 | 字重 | 用途 |
|---|---|---|---|
| 标题大字 | headlineSmall | Bold | 页面主标题 |
| 卡片标题 | titleMedium | Bold | 模板标题 |
| 正文 | bodyLarge | Regular | 生成内容 |
| 辅助文字 | bodySmall | Regular | 标签、时间 |
4.3 组件规范
4.3.1 生成页面布局
┌─────────────────────────────────┐
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ ← 可折叠AppBar
│ ✨ 废话生成器 │
├─────────────────────────────────┤
│ 使用场景 │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │📅周报│ │📊月报│ │📝年终│ │ ← ChoiceChip
│ └────┘ └────┘ └────┘ │
│ ┌────┐ ┌────┐ ┌────┐ │
│ │📋项目│ │🎤述职│ │👥会议│ │
│ └────┘ └────┘ └────┘ │
│ │
│ 语气风格 │
│ ┌──────────┐ ┌──────────┐ │
│ │正式·严肃专业│ │轻松·自然随和│ │ ← FilterChip
│ └──────────┘ └──────────┘ │
│ │
│ 生成长度 │
│ ┌────┬────┬────┬────┐ │
│ │100字│200字│500字│1000字│ │ ← SegmentedButton
│ └────┴────┴────┴────┘ │
│ │
│ 主题关键词 │
│ ┌─────────────────────────┐ │
│ │ 项目进度... ✕ │ │ ← 输入框
│ └─────────────────────────┘ │
│ │
│ ┌─────────────────────────┐ │
│ │ ✨ 生成废话 │ │ ← 主按钮
│ └─────────────────────────┘ │
│ │
│ 生成结果 │
│ ┌─────────────────────────┐ │
│ │ 本周主要围绕项目进度... │ │ ← 结果文本
│ └─────────────────────────┘ │
│ [📋复制] [↗️分享] │
└─────────────────────────────────┘
4.3.2 历史卡片
┌─────────────────────────────────┐
│ ┌──────┐ ┌──────┐ 2024-01-15│
│ │ 周报 │ │ 正式 │ │
│ └──────┘ └──────┘ │
│ 主题:项目进度 │
│ 本周主要围绕项目进度展开工作... │
└─────────────────────────────────┘
4.4 交互设计
4.4.1 操作方式
| 操作 | 手势 | 效果 |
|---|---|---|
| 选择场景 | 点击ChoiceChip | 切换场景类型 |
| 选择语气 | 点击FilterChip | 切换语气风格 |
| 选择长度 | 点击SegmentedButton | 切换字数档位 |
| 生成废话 | 点击生成按钮 | 启动生成流程 |
| 复制文本 | 点击复制按钮 | 复制到剪贴板 |
| 查看历史 | 点击历史卡片 | 打开详情面板 |
五、核心功能实现
5.1 废话生成
dart
Future<void> _generateNonsense() async {
if (_topicController.text.isEmpty) {
_showSnackBar('请输入主题关键词');
return;
}
setState(() {
_isGenerating = true;
_generationProgress = 0;
_generatedText = null;
});
for (int i = 0; i <= 10; i++) {
await Future.delayed(const Duration(milliseconds: 100));
if (!mounted) return;
setState(() {
_generationProgress = i / 10;
});
}
final text = NonsenseGenerator.generate(
topic: _topicController.text,
scene: _selectedScene,
tone: _selectedTone,
length: _selectedLength,
);
if (!mounted) return;
setState(() {
_isGenerating = false;
_generatedText = text;
});
NonsenseStorage.addToHistory(NonsenseItem(
id: DateTime.now().millisecondsSinceEpoch.toString(),
topic: _topicController.text,
scene: _selectedScene,
tone: _selectedTone,
content: text,
createdAt: _formatDateTime(DateTime.now()),
));
}
5.2 模板替换算法
dart
static String generate({
required String topic,
required String scene,
required String tone,
required int length,
}) {
final random = Random();
final sceneTemplates = _templates[scene] ?? _templates['周报']!;
final toneWords = _buzzwords[tone] ?? _buzzwords['正式']!;
String result = '';
// 开头
final opening = sceneTemplates['开头']![random.nextInt(sceneTemplates['开头']!.length)];
result += opening.replaceAll('{topic}', topic);
result += '\n\n';
// 中间段落(根据长度决定段落数)
final paragraphCount = length > 500 ? 4 : (length > 200 ? 2 : 1);
for (int i = 0; i < paragraphCount; i++) {
final middle = sceneTemplates['中间']![random.nextInt(sceneTemplates['中间']!.length)];
var paragraph = middle.replaceAll('{topic}', topic);
// 插入语气词
if (random.nextBool()) {
final buzzword = toneWords[random.nextInt(toneWords.length)];
paragraph = paragraph.replaceFirst(',', ',$buzzword');
}
result += paragraph;
result += '\n\n';
}
// 结尾
final ending = sceneTemplates['结尾']![random.nextInt(sceneTemplates['结尾']!.length)];
result += ending.replaceAll('{topic}', topic);
// 调整长度
if (result.length > length) {
result = result.substring(0, length);
final lastPeriod = result.lastIndexOf('。');
if (lastPeriod > length * 0.8) {
result = result.substring(0, lastPeriod + 1);
}
}
return result;
}
5.3 历史管理
dart
static void addToHistory(NonsenseItem item) {
_history.insert(0, item);
if (_history.length > 100) {
_history.removeLast();
}
}
六、职场写作知识拓展
6.1 职场汇报的作用
职场汇报
展示工作成果
沟通项目进展
争取资源支持
建立个人品牌
促进职业发展
6.2 汇报写作技巧
| 技巧 | 说明 |
|---|---|
| 结构清晰 | 开头-中间-结尾三段式 |
| 数据支撑 | 用数据说话,增强说服力 |
| 突出重点 | 先说结论,再展开细节 |
| 正面表达 | 用积极词汇描述工作 |
| 展望未来 | 提出下一步计划和目标 |
6.3 不同场景汇报特点
| 场景 | 篇幅 | 重点 | 语气 |
|---|---|---|---|
| 周报 | 简短 | 本周进展、下周计划 | 简洁 |
| 月报 | 中等 | 月度成果、数据分析 | 客观 |
| 年终总结 | 较长 | 年度亮点、成长收获 | 正式 |
| 项目汇报 | 中等 | 项目进展、风险问题 | 专业 |
| 述职报告 | 较长 | 个人贡献、能力提升 | 自信 |
| 会议纪要 | 简短 | 决议事项、行动项 | 精炼 |
6.4 职场沟通发展趋势
职场沟通发展
数字化表达
可视化呈现
智能化辅助
个性化定制
在线协作工具
即时通讯平台
数据图表
思维导图
AI写作助手
智能摘要
个人风格模板
场景化话术
七、扩展功能规划
7.1 后续版本规划
2024-01-07 2024-01-14 2024-01-21 2024-01-28 2024-02-04 2024-02-11 2024-02-18 2024-02-25 2024-03-03 2024-03-10 2024-03-17 2024-03-24 2024-03-31 场景选择功能 语气设定功能 长度控制功能 模板库功能 历史记录功能 真实剪贴板集成 本地持久化存储 自定义模板编辑 AI智能生成 行业模板定制 多语言支持 V1.0 基础版本 V1.1 增强版本 V1.2 进阶版本 废话生成器开发计划
7.2 功能扩展建议
7.2.1 智能生成功能
| 功能 | 说明 |
|---|---|
| AI大模型接入 | 接入GPT等大语言模型 |
| 语义理解 | 理解用户真实意图 |
| 个性化推荐 | 根据历史推荐模板 |
| 多轮对话 | 支持追问和修改 |
7.2.2 行业定制功能
| 功能 | 说明 |
|---|---|
| 行业模板 | 互联网、金融、制造业等 |
| 岗位模板 | 技术、产品、运营等 |
| 公司模板 | 大厂、创业公司等 |
7.2.3 协作分享功能
| 功能 | 说明 |
|---|---|
| 模板分享 | 分享自定义模板 |
| 团队协作 | 团队共享模板库 |
| 社区互动 | 用户交流社区 |
八、注意事项
8.1 开发注意事项
-
字符串插值 :简单变量使用
$variable而非${variable} -
控制器释放:在dispose中释放TextEditingController
-
状态同步:弹窗使用StatefulBuilder保持状态同步
-
历史上限:历史记录限制100条,防止内存溢出
-
输入校验:生成前校验主题关键词非空
8.2 用户体验优化
✨ 用户体验建议 ✨
- 场景选择直观,图标+文字组合
- 语气风格描述清晰,降低选择成本
- 生成进度可视化,增强反馈感
- 结果支持一键复制,提升效率
8.3 常见问题
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 生成内容重复 | 随机种子相同 | 检查Random实例 |
| 复制不成功 | 剪贴板权限 | 添加权限声明 |
| 历史记录丢失 | 内存存储重启清空 | 迁移至持久化存储 |
| 长度不准确 | 截断位置不当 | 在句号处截断 |
九、运行说明
9.1 环境要求
| 环境 | 版本要求 |
|---|---|
| Flutter SDK | >= 3.0.0 |
| Dart SDK | >= 2.17.0 |
| 鸿蒙OS | API 21+ |
9.2 运行命令
bash
# 查看可用设备
flutter devices
# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_nonsense.dart
# 运行到Windows
flutter run -d windows -t lib/main_nonsense.dart
# 代码分析
flutter analyze lib/main_nonsense.dart
十、总结
废话生成器应用通过"场景模板+语气词库"的策略,为用户提供快速生成职场废话的能力。应用内置6套场景模板,每套包含开头、中间、结尾三部分,配合4种语气风格,理论组合数约648种变体,满足不同职场场景的汇报需求。
应用采用浅色主题配合绿色主色调,营造专业清新的氛围。生成页面采用ChoiceChip展示场景选择、FilterChip展示语气风格、SegmentedButton展示长度控制,交互直观便捷。生成过程可视化,用户可以实时看到生成进度。
模板库提供6套预设模板,涵盖周报、延期说明、加薪申请、会议纪要、年终总结、需求变更等常见场景,用户可以快速查看和复制常用话术。历史记录功能保留最近100条生成记录,支持查看详情和一键清空。
应用采用Material Design 3设计规范,遵循Flutter最佳实践,代码结构清晰,易于维护和扩展。后续版本计划集成真实剪贴板、本地持久化存储、AI智能生成等功能,为用户提供更完善的职场写作体验。
废话生成器,让职场汇报更轻松!