方言学习助手应用


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

一、项目概述

运行效果图

image-20260409200206821

image-20260409200217028

image-20260409200221874

image-20260409200226619

1.1 应用简介

方言学习助手是一款教育学习类应用,致力于帮助用户学习全国各地特色方言。支持粤语、四川话、东北话、上海话、闽南语、湖南话六大方言体系,涵盖日常问候、购物场景、美食点餐、交通出行、旅游问路、家庭生活六大实用场景。通过真人发音示范、情景对话练习、趣味闯关测试,让用户轻松掌握各地方言,走遍全国都不怕。

应用以温暖的橙红色为主色调,象征热情与交流。涵盖首页导航、学习中心、练习测试、学习进度四大模块。用户可以选择方言类型、学习场景课程、进行发音练习、完成趣味测试,系统化提升方言能力。

1.2 核心功能

功能模块 功能描述 实现方式
方言选择 6种方言类型选择 枚举定义
场景课程 6种实用场景课程 分类管理
发音学习 方言发音+音标标注 模拟播放
情景对话 实用例句展示 数据模型
趣味练习 选择题闯关测试 交互组件
学习进度 进度统计+连续天数 状态管理

1.3 方言类型定义

序号 方言名称 Emoji 地区 色值
1 粤语 🦁 广东 #E91E63
2 四川话 🌶️ 四川 #F44336
3 东北话 🧣 东北 #2196F3
4 上海话 🏙️ 上海 #9C27B0
5 闽南语 🌊 福建 #00BCD4
6 湖南话 🌶️ 湖南 #FF9800

1.4 学习场景定义

序号 场景名称 Emoji 色值 描述
1 日常问候 👋 #4CAF50 打招呼用语
2 购物场景 🛒 #2196F3 买卖交流
3 美食点餐 🍜 #FF9800 餐厅用语
4 交通出行 🚇 #9C27B0 交通问路
5 旅游问路 🗺️ #00BCD4 景点导航
6 家庭生活 🏠 #E91E63 家庭交流

1.5 难度等级定义

序号 等级名称 Emoji 色值
1 入门 🌱 #8BC34A
2 进阶 🌿 #FFC107
3 高级 🌳 #FF5722

1.6 技术栈

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

1.7 项目结构

lib/
└── main_dialect_learning.dart
    ├── DialectLearningApp              # 应用入口
    ├── DialectType                     # 方言类型枚举
    ├── LessonType                      # 学习场景枚举
    ├── Difficulty                      # 难度等级枚举
    ├── DialectPhrase                   # 方言短语模型
    ├── LearningProgress                # 学习进度模型
    ├── DialectLearningHomePage         # 主页面(底部导航)
    ├── _buildHomePage                  # 首页模块
    ├── _buildLearnPage                 # 学习页模块
    ├── _buildPracticePage              # 练习页模块
    ├── _buildProgressPage              # 进度页模块
    ├── LessonPage                      # 课程学习页面
    └── PracticePage                    # 练习测试页面

二、系统架构

2.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
DialectLearningHomePage

首页

学习页

练习页

进度页

方言选择

快速开始

每日一句

场景入口

课程列表

发音学习

情景对话

选择题测试

得分统计

进度图表

连续天数

发音播放器
PronunciationPlayer

进度计算器
ProgressCalculator

题目生成器
QuestionGenerator

DialectPhrase
方言短语

LearningProgress
学习进度

DialectType
方言类型

LessonType
学习场景

2.2 类图设计

has

has

has

tracks

DialectLearningApp

+Widget build()

«enumeration»

DialectType

+String label

+String emoji

+String region

+Color color

+cantonese()

+sichuan()

+dongbei()

+shanghai()

+minnan()

+hunan()

«enumeration»

LessonType

+String label

+String emoji

+Color color

+greeting()

+shopping()

+food()

+transport()

+travel()

+family()

«enumeration»

Difficulty

+String label

+String emoji

+Color color

+beginner()

+intermediate()

+advanced()

DialectPhrase

+String id

+String mandarin

+String dialect

+String pronunciation

+String meaning

+DialectType dialectType

+LessonType lessonType

+Difficulty difficulty

+String example

LearningProgress

+DialectType dialect

+int learnedPhrases

+int totalPhrases

+int correctAnswers

+int totalAnswers

+int streak

+double progress

+double accuracy

2.3 页面导航流程

首页

学习

练习

进度

正确

错误

应用启动

首页

底部导航

选择方言

课程列表

测试页面

进度统计

快速开始

选择课程

发音学习

情景对话

标记已学

选择题

作答

得分+1

显示答案

下一题

2.4 学习流程时序

进度页 发音播放 学习页 首页 用户 进度页 发音播放 学习页 首页 用户 选择方言类型 高亮选中项 点击快速开始 跳转学习页 选择场景课程 加载课程内容 点击播放发音 播放音频 播放完成 标记已学习 更新进度 显示新进度

三、核心模块设计

3.1 数据模型设计

3.1.1 方言类型枚举 (DialectType)
enum DialectType {
  cantonese('粤语', '🦁', '广东', Color(0xFFE91E63)),
  sichuan('四川话', '🌶️', '四川', Color(0xFFF44336)),
  dongbei('东北话', '🧣', '东北', Color(0xFF2196F3)),
  shanghai('上海话', '🏙️', '上海', Color(0xFF9C27B0)),
  minnan('闽南语', '🌊', '福建', Color(0xFF00BCD4)),
  hunan('湖南话', '🌶️', '湖南', Color(0xFFFF9800));

  final String label;
  final String emoji;
  final String region;
  final Color color;

  const DialectType(this.label, this.emoji, this.region, this.color);
}
3.1.2 学习场景枚举 (LessonType)
enum LessonType {
  greeting('日常问候', '👋', Color(0xFF4CAF50)),
  shopping('购物场景', '🛒', Color(0xFF2196F3)),
  food('美食点餐', '🍜', Color(0xFFFF9800)),
  transport('交通出行', '🚇', Color(0xFF9C27B0)),
  travel('旅游问路', '🗺️', Color(0xFF00BCD4)),
  family('家庭生活', '🏠', Color(0xFFE91E63));

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

  const LessonType(this.label, this.emoji, this.color);
}
3.1.3 方言短语模型 (DialectPhrase)
class DialectPhrase {
  final String id;              // 短语ID
  final String mandarin;        // 普通话原文
  final String dialect;         // 方言表达
  final String pronunciation;   // 发音标注
  final String meaning;         // 含义解释
  final DialectType dialectType;// 所属方言
  final LessonType lessonType;  // 所属场景
  final Difficulty difficulty;  // 难度等级
  final String example;         // 例句
}
3.1.4 学习进度模型 (LearningProgress)
class LearningProgress {
  final DialectType dialect;    // 方言类型
  final int learnedPhrases;     // 已学短语数
  final int totalPhrases;       // 总短语数
  final int correctAnswers;     // 正确答题数
  final int totalAnswers;       // 总答题数
  final int streak;             // 连续学习天数

  double get progress => totalPhrases > 0 ? learnedPhrases / totalPhrases : 0;
  double get accuracy => totalAnswers > 0 ? correctAnswers / totalAnswers : 0;
}
3.1.5 方言学习分布
35% 20% 18% 12% 10% 5% 方言学习热度分布示例 粤语 四川话 东北话 上海话 闽南语 湖南话

3.2 页面结构设计

3.2.1 主页面布局

DialectLearningHomePage

IndexedStack

首页

学习页

练习页

进度页

NavigationBar

首页 Tab

学习 Tab

练习 Tab

进度 Tab

3.2.2 首页结构

首页

渐变背景

头部信息

方言选择器

快速开始按钮

每日一句卡片

场景入口网格

应用图标

应用名称

连续学习天数

3x2方言网格

选中高亮效果

方言标签

普通话原文

方言表达

发音标注

播放按钮

6个场景卡片

3.2.3 学习页结构

学习页

课程筛选

短语列表

学习卡片

方言筛选

场景筛选

难度筛选

普通话展示

方言表达

发音标注

含义解释

例句展示

播放发音

标记已学

3.2.4 练习页结构

练习页

方言选择

题目区域

选项区域

进度指示

得分显示

方言短语

发音标注

4个选项按钮

正确/错误反馈

线性进度条

题目计数

3.3 发音播放逻辑

点击播放按钮

触发动画

播放图标动画

是否有音频?

播放音频文件

模拟播放效果

显示播放状态

延时500ms

恢复初始状态

显示提示消息

3.4 练习答题逻辑

正确

错误

开始练习

加载题目

生成选项

显示题目

用户选择

判断正误

得分+1

显示正确提示

显示正确答案

还有题目?

下一题

显示结果

更新进度


四、UI设计规范

4.1 配色方案

应用以温暖的橙红色为主色调,象征热情与交流:

颜色类型 色值 用途
主色 #FF5722 (DeepOrange) 导航、主题元素
辅助色 #FF7043 渐变效果
强调色 #FFCDD2 背景渐变
背景色 #FFEBEE → #EF9A9A 首页渐变背景
卡片背景 #FFFFFF 内容卡片

4.2 方言专属配色

方言 色值 视觉效果
粤语 #E91E63 热情粉红
四川话 #F44336 辣椒红
东北话 #2196F3 冰雪蓝
上海话 #9C27B0 优雅紫
闽南语 #00BCD4 海洋青
湖南话 #FF9800 剁椒橙

4.3 字体规范

元素 字号 字重 颜色
页面标题 22px Bold #000000
方言表达 28px Bold 方言色
普通话 16px Regular #9E9E9E
发音标注 14px Italic #757575
统计数字 20px Bold 白色

4.4 组件规范

4.4.1 方言选择卡片
┌─────────────────────────────────────┐
│  选择方言                            │
│                                     │
│  ┌──────┐ ┌──────┐ ┌──────┐        │
│  │  🦁  │ │  🌶️  │ │  🧣  │        │
│  │ 粤语 │ │四川话│ │东北话│        │
│  │ 广东 │ │ 四川 │ │ 东北 │        │
│  └
Logo

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

更多推荐