Skip to content

gouweisui/Learning-for-children

Repository files navigation

项目整体逻辑说明

面向儿童的学习类应用,采用 Kotlin Multiplatform + Compose Multiplatform,一套 Kotlin 代码同时支持 Android / iOS。当前阶段为算术题练习,后续可扩展英语等模块。


一、技术栈与模块划分

层级 说明
shared (commonMain) 业务模型、难度规则、题目生成、判题逻辑、UI 状态、ViewModel(平台无关,无 Android/iOS API)
composeApp 跨平台 UI(Compose Multiplatform)、应用入口
  • UI:全部业务界面用 Compose Multiplatform 编写,不依赖 SwiftUI/UIKit 写业务 UI。
  • 数据流:单向数据流,Event → ViewModel → State → UI。

二、界面与导航

界面 说明
主界面 (Main) 显示「第 X / 总数 题」、题目表达式、答案输入框、计算器式数字键盘(0–9、清空、退格)、提交 / 下一题;做完本组后显示「本组已完成」与「再练一组」。
设置 (Settings) 难度选择、每组题数、每道题倒计时等;顶部返回主界面。
  • 主界面顶部可进入设置;设置内点击「返回」回到主界面。
  • 主界面在手机为上下布局,在平板(宽屏)为左右分栏(题目区 + 键盘区)。

三、难度与题数

难度(4 选 1,按钮)

  1. 10 以内加法
  2. 10 以内加减法(结果不为负数)
  3. 100 以内加法
  4. 100 以内加减法(结果不为负数)
  • 减法题由 ProblemGenerator 保证结果非负(例如先选被减数再在合法范围内选减数)。

每组题数(4 选 1,按钮)

  • 10 题 / 20 题 / 30 题 / 50 题

重要规则:修改难度或题数都会重新开始

  • 修改难度:保存新难度,并从第 1 题重新开始本组练习(用新难度出题)。
  • 修改题数:保存新题数,并从第 1 题重新开始本组练习(用新题数作为本组总数)。
  • 返回主界面后会看到更新后的题目与「第 1 / 新总数 题」,无需手动刷新。

四、练习流程与状态

  • 题号:主界面显示「第 currentQuestionNumber / totalQuestions 题」。
  • 单题流程:输入答案 → 提交 → 显示对/错 → 点击「下一题」进入下一题。
  • 本组做完:当已做题目数达到本组题数时,进入「本组已完成」;点击「再练一组」从第 1 题重新开始(难度与题数沿用当前设置)。

状态集中在 AppState / ArithmeticState(shared),由 AppViewModel 统一处理事件并更新状态。


五、核心文件与职责

文件/目录 职责
shared/.../Difficulty.kt 难度枚举(id、标题、数值范围、运算符、是否允许负数);byIdOrDefault 按 id 解析。
shared/.../ProblemGenerator.kt 按难度随机生成题目(保证减法结果非负等)。
shared/.../ModuleDifficultySettings.kt 设置数据:难度 id、每组题数、每道题倒计时等。
shared/.../AppViewModel.kt 平台无关 ViewModel:处理导航、难度/题数变更(并重置会话)、输入、提交、下一题、再练一组等。
composeApp/.../AppRoot.kt 根 Composable,根据 Screen 显示主界面、设置或做题记录。
composeApp/.../MainScreen.kt 主界面:题号、题目、输入、键盘、提交/下一题/再练一组等。
composeApp/.../SettingsScreen.kt 设置界面:难度、题数、每道题倒计时等;用固定 id 列表保证难度选项。

六、事件与状态要点

  • ChangeDifficulty:更新难度 id,并重置算术会话(新会话从第 1 题开始,总题数为当前设置题数)。
  • UpdateTotalQuestions:更新题数,并重置算术会话(新会话从第 1 题开始,总题数为新题数)。
  • RestartSession:不改难度和题数,仅重新开始一组(从第 1 题开始)。
  • 主界面始终从 state 读取当前题号、总题数、题目、输入与对错结果,因此修改难度或题数后返回会自然「刷新」为新一轮练习。

以上即为当前项目的整体逻辑与行为约定。

About

儿童练习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors