亲子故事共创应用


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

一、项目概述

运行效果图

image-20260409184621594

image-20260409184627626

image-20260409184634057

image-20260409184649951

image-20260409184655638

image-20260409184659960

1.1 应用简介

亲子故事共创是一款亲子教育类应用,核心理念是"父母孩子一起创作专属故事书"。通过角色设定、剧情分支、插图生成的完整创作流程,让家长和孩子共同参与故事创作,最终生成可打印的专属故事书。

每个孩子都是天生的故事家,他们拥有无穷的想象力和创造力。本应用为亲子互动提供了一个创意平台,让家长引导孩子发挥想象力,在创作过程中增进亲子感情,培养孩子的表达能力、逻辑思维和创造力。

1.2 核心功能

功能模块功能描述实现方式
主题选择选择故事背景主题6种故事主题
角色设定创造故事角色类型+形象+特点
剧情分支选择故事发展方向双选项分支系统
插图生成为故事配图Emoji表情插图
故事书架管理创作的故事网格展示+时间排序
分享导出打印和分享故事打印/PDF/分享

1.3 故事主题

序号主题Emoji颜色典型元素
1冒险故事🗺️#2196F3探险、寻宝、旅行
2童话故事🧚#E91E63魔法、精灵、城堡
3科幻故事🚀#9C27B0太空、未来、科技
4动物故事🦁#4CAF50森林、动物、自然
5侦探故事🔍#FF9800解谜、推理、冒险
6友情故事💝#00BCD4朋友、帮助、成长

1.4 角色类型

序号类型Emoji颜色角色定位
1主角🦸#F44336故事核心人物
2助手🧙#4CAF50帮助主角的人
3反派👿#9C27B0制造冲突的人
4朋友👦#2196F3主角的伙伴
5宠物🐕#FF9800忠诚的伙伴
6智者👴#00BCD4提供智慧的人

1.5 技术栈

技术领域技术选型版本要求
开发框架Flutter>= 3.0.0
编程语言Dart>= 2.17.0
设计规范Material Design 3-
状态管理setState-
动画控制AnimationController-
目标平台鸿蒙OS / WebAPI 21+

二、项目结构

lib/
├── main_story_cocreation.dart      # 应用主入口
│   ├── StoryCoCreationApp          # 根应用组件
│   ├── StoryTheme                  # 故事主题枚举
│   ├── CharacterType               # 角色类型枚举
│   ├── StoryCharacter              # 故事角色模型
│   ├── StoryBranch                 # 剧情分支模型
│   ├── StoryBook                   # 故事书模型
│   ├── StoryPage                   # 故事页模型
│   ├── StoryCoCreationHomePage     # 主页面
│   ├── StoryCreationPage           # 创作页面
│   └── StoryViewPage               # 阅读页面

三、数据模型

3.1 StoryTheme 枚举

enum StoryTheme {
  adventure('冒险故事', '🗺️', Color(0xFF2196F3)),
  fairy('童话故事', '🧚', Color(0xFFE91E63)),
  scifi('科幻故事', '🚀', Color(0xFF9C27B0)),
  animal('动物故事', '🦁', Color(0xFF4CAF50)),
  mystery('侦探故事', '🔍', Color(0xFFFF9800)),
  friendship('友情故事', '💝', Color(0xFF00BCD4));

  final String label;
  final String emoji;
  final Color color;
}

3.2 CharacterType 枚举

enum CharacterType {
  hero('主角', '🦸', Color(0xFFF44336)),
  helper('助手', '🧙', Color(0xFF4CAF50)),
  villain('反派', '👿', Color(0xFF9C27B0)),
  friend('朋友', '👦', Color(0xFF2196F3)),
  pet('宠物', '🐕', Color(0xFFFF9800)),
  wise('智者', '👴', Color(0xFF00BCD4));

  final String label;
  final String emoji;
  final Color color;
}

3.3 StoryCharacter 模型

class StoryCharacter {
  final String id;              // 唯一标识
  final String name;            // 角色名称
  final CharacterType type;     // 角色类型
  final String emoji;           // 角色形象
  final String trait;           // 角色特点
  final Color color;            // 主题颜色
}

3.4 StoryBranch 模型

class StoryBranch {
  final String id;              // 唯一标识
  final String text;            // 情景描述
  final String choiceA;         // 选项A
  final String choiceB;         // 选项B
  final String resultA;         // 选择A的结果
  final String resultB;         // 选择B的结果
  final String emoji;           // 情景插图
}

3.5 StoryBook 模型

class StoryBook {
  final String id;                    // 唯一标识
  final String title;                 // 故事标题
  final StoryTheme theme;             // 故事主题
  final List<StoryCharacter> characters; // 角色列表
  final List<StoryPage> pages;        // 页面列表
  final DateTime createdAt;           // 创建时间
  final String coverEmoji;            // 封面插图
}

3.6 StoryPage 模型

class StoryPage {
  final String content;         // 页面内容
  final String emoji;           // 页面插图
  final int pageNumber;         // 页码
}

四、核心功能实现

4.1 创作流程控制

class _StoryCreationPageState extends State<StoryCreationPage> {
  int _currentStep = 0;         // 当前步骤
  StoryTheme? _selectedTheme;   // 选定主题
  final List<StoryCharacter> _characters = [];  // 角色列表
  final List<StoryPage> _pages = [];            // 页面列表
  
  void _nextStep() {
    // 验证当前步骤
    if (_currentStep == 0 && _selectedTheme == null) {
      // 提示选择主题
      return;
    }
    if (_currentStep == 1 && _characters.isEmpty) {
      // 提示添加角色
      return;
    }
    if (_currentStep == 2 && _pages.isEmpty) {
      // 提示创建故事
      return;
    }
    
    // 进入下一步或完成
    if (_currentStep < 3) {
      setState(() => _currentStep++);
    } else {
      _completeStory();
    }
  }
}

4.2 剧情分支生成

StoryBranch _generateStoryBranch() {
  final branches = [
    StoryBranch(
      text: '主角来到了一个分岔路口...',
      choiceA: '向左走',
      choiceB: '向右走',
      resultA: '左边是一片神秘的森林...',
      resultB: '右边是一条小溪...',
      emoji: '🛤️',
    ),
    // 更多分支...
  ];
  
  return branches[Random().nextInt(branches.length)];
}

4.3 分支选择处理

void _selectBranch(StoryBranch branch, bool isChoiceA) {
  setState(() {
    _pages.add(StoryPage(
      content: isChoiceA ? branch.resultA : branch.resultB,
      emoji: branch.emoji,
      pageNumber: _pages.length + 1,
    ));
  });
}

4.4 故事完成处理

void _completeStory() {
  final book = StoryBook(
    id: DateTime.now().millisecondsSinceEpoch.toString(),
    title: _titleController.text,
    theme: _selectedTheme!,
    characters: _characters,
    pages: _pages,
    createdAt: DateTime.now(),
    coverEmoji: _pages.isNotEmpty ? _pages.first.emoji : '📖',
  );

  widget.onComplete(book);
  Navigator.pop(context);
}

五、界面设计

5.1 页面结构

页面功能设计要点
首页快速入口和最近创作渐变背景 + 横向滚动
故事书架管理所有故事书网格布局 + 封面展示
创作工坊创作流程引导步骤卡片 + 一键开始
创作页面分步创作流程步骤指示 + 表单输入
阅读页面故事书阅读翻页效果 + 页码指示

5.2 创作流程设计

步骤内容交互方式
步骤1选择故事主题卡片选择
步骤2设定故事角色弹窗表单
步骤3编写故事剧情分支选择
步骤4完成创作标题输入 + 预览

5.3 配色方案

元素颜色值用途
主色调#E91E63品牌色、按钮
背景渐变#FCE4EC → #F48FB1首页背景
卡片背景#FFFFFF内容卡片
主题色各主题独立颜色主题区分

六、动画效果

6.1 浮动动画

_floatController = AnimationController(
  vsync: this,
  duration: const Duration(seconds: 3),
)..repeat(reverse: true);  // 往返浮动效果

6.2 动画应用

动画类型效果描述应用场景
浮动动画上下缓慢浮动开始创作按钮
渐变背景多色渐变过渡页面背景
页面切换索引堆栈切换步骤切换

七、运行与调试

7.1 运行命令

# 运行应用
flutter run -d harmonyos lib/main_story_cocreation.dart

# 代码分析
flutter analyze lib/main_story_cocreation.dart

# 构建HAP包
flutter build hap --target lib/main_story_cocreation.dart

7.2 调试要点

调试项检查内容解决方案
创作流程步骤切换是否正常验证 _currentStep 逻辑
角色添加角色数据是否正确检查表单输入
故事保存故事书是否正确保存验证 onComplete 回调

八、扩展方向

8.1 功能扩展

扩展功能实现思路技术要点
真实插图AI生成插图图像生成API
语音朗读故事语音播放TTS语音合成
数据持久化保存故事数据SharedPreferences
云端同步多设备同步云存储服务
打印功能生成PDF打印PDF生成库
模板系统预设故事模板模板配置文件

8.2 内容扩展

扩展项优化方案预期效果
更多主题增加故事主题更丰富的选择
分支深度多层剧情分支更复杂的故事
角色互动角色对话系统更生动的剧情

九、使用场景

9.1 亲子互动时光

家长可以在睡前或周末,和孩子一起使用本应用创作故事。通过讨论故事主题、设计角色、选择剧情走向,增进亲子互动,培养孩子的想象力和表达能力。

9.2 幼儿园教学活动

幼儿园老师可以将本应用作为创意写作教学的辅助工具,引导孩子们一起创作班级故事,培养团队合作精神和创造力。

9.3 儿童生日礼物

家长可以将和孩子一起创作的故事书打印出来,作为独特的生日礼物或纪念品,记录孩子的成长和想象力。


十、总结

亲子故事共创应用通过完整的创作流程,为家长和孩子提供了一个共同创作故事的平台。应用采用Flutter框架开发,使用分步骤引导的方式,让创作过程简单有趣。

核心亮点包括:

  • 主题丰富:6种故事主题,满足不同喜好
  • 角色定制:6种角色类型,自由设定形象和特点
  • 分支剧情:双选项分支系统,故事走向由你决定
  • 插图配图:Emoji表情插图,生动有趣
  • 故事书架:管理所有创作的故事,随时回顾
  • 分享导出:支持打印和分享,留下美好回忆

该应用为亲子互动提供了一个创意平台,让家长和孩子在共同创作中增进感情,培养孩子的创造力和表达能力,留下珍贵的亲子时光记忆。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐