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

一、项目概述

运行效果图

image-20260408232341107

image-20260408232349105

image-20260408232353633

image-20260408232358193

1.1 应用简介

儿童技能打卡墙是一款创新的亲子教育应用,核心理念是"把学习变成闯关游戏"。通过游戏化的设计理念,将传统的技能学习任务转化为有趣的挑战关卡,配合成就徽章和奖励机制,让孩子在游戏中学习,在学习中成长。

传统的技能学习往往枯燥乏味,孩子容易产生抵触情绪。本应用借鉴游戏设计的核心元素——目标设定、进度反馈、成就解锁、奖励兑换,将学习过程游戏化,激发孩子的内在动力,培养自主学习能力和良好习惯。

1.2 核心功能

功能模块功能描述实现方式
技能任务创建和管理技能学习任务分类管理 + 进度追踪
打卡系统每日打卡记录学习进度一键打卡 + 积分奖励
积分系统完成任务获得积分奖励积分计算 + 等级评定
成就徽章解锁成就获得徽章条件判断 + 徽章展示
奖励商店积分兑换奖励积分消耗 + 奖励兑换
连续打卡记录连续打卡天数日期计算 + 连续统计

1.3 技能分类

序号类别Emoji颜色典型技能
1生活技能🏠#4CAF50整理房间、做家务
2学习技能📚#2196F3阅读、写字、算术
3运动技能#FF9800跳绳、跑步、游泳
4艺术技能🎨#E91E63画画、音乐、舞蹈
5社交技能👥#9C27B0礼貌用语、分享合作
6自理技能🧒#00BCD4刷牙、穿衣、吃饭

1.4 徽章等级

序号等级Emoji所需积分颜色
1铜牌🥉10#CD7F32
2银牌🥈30#C0C0C0
3金牌🥇60#FFD700
4钻石💎100#00CED1

1.5 技术栈

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

二、项目结构

lib/
├── main_skill_checkin.dart         # 应用主入口
│   ├── SkillCheckInApp             # 根应用组件
│   ├── SkillCategory               # 技能分类枚举
│   ├── BadgeLevel                  # 徽章等级枚举
│   ├── SkillTask                   # 技能任务模型
│   ├── Achievement                 # 成就模型
│   ├── Reward                      # 奖励模型
│   └── SkillCheckInHomePage        # 主页面

三、数据模型

3.1 SkillCategory 枚举

enum SkillCategory {
  life('生活技能', '🏠', Color(0xFF4CAF50)),
  study('学习技能', '📚', Color(0xFF2196F3)),
  sport('运动技能', '⚽', Color(0xFFFF9800)),
  art('艺术技能', '🎨', Color(0xFFE91E63)),
  social('社交技能', '👥', Color(0xFF9C27B0)),
  selfCare('自理技能', '🧒', Color(0xFF00BCD4));

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

3.2 BadgeLevel 枚举

enum BadgeLevel {
  bronze('铜牌', '🥉', 10, Color(0xFFCD7F32)),
  silver('银牌', '🥈', 30, Color(0xFFC0C0C0)),
  gold('金牌', '🥇', 60, Color(0xFFFFD700)),
  diamond('钻石', '💎', 100, Color(0xFF00CED1));

  final String label;
  final String emoji;
  final int requiredPoints;
  final Color color;

  static BadgeLevel fromPoints(int points) {
    if (points >= 100) return BadgeLevel.diamond;
    if (points >= 60) return BadgeLevel.gold;
    if (points >= 30) return BadgeLevel.silver;
    return BadgeLevel.bronze;
  }
}

3.3 SkillTask 模型

class SkillTask {
  final String id;                    // 任务唯一标识
  final String title;                 // 任务标题
  final SkillCategory category;       // 技能类别
  final int points;                   // 完成积分
  final IconData icon;                // 任务图标
  final String description;           // 任务描述
  final int targetCount;              // 目标次数
  final int completedCount;           // 已完成次数
  final List<String> completedDates;  // 完成日期列表

  bool get isCompleted => completedCount >= targetCount;
  double get progress => completedCount / targetCount;
}

3.4 Achievement 模型

class Achievement {
  final String id;                    // 成就唯一标识
  final String title;                 // 成就标题
  final String description;           // 成就描述
  final String emoji;                 // 成就emoji
  final int requiredCount;            // 所需完成数
  final Color color;                  // 成就颜色
  final bool isUnlocked;              // 是否解锁
  final DateTime? unlockedAt;         // 解锁时间
}

3.5 Reward 模型

class Reward {
  final String id;                    // 奖励唯一标识
  final String title;                 // 奖励标题
  final String description;           // 奖励描述
  final String emoji;                 // 奖励emoji
  final int requiredPoints;           // 所需积分
  final bool isClaimed;               // 是否已兑换
}

四、核心功能实现

4.1 打卡流程

选择任务

点击打卡按钮

更新完成次数

增加积分

检查任务是否完成

显示完成动画

显示打卡成功

检查成就解锁

更新界面

4.2 积分计算逻辑

void _checkInTask(SkillTask task) {
  if (task.isCompleted) return;

  setState(() {
    final index = _tasks.indexWhere((t) => t.id == task.id);
    if (index != -1) {
      _tasks[index] = SkillTask(
        id: task.id,
        title: task.title,
        category: task.category,
        points: task.points,
        icon: task.icon,
        description: task.description,
        targetCount: task.targetCount,
        completedCount: task.completedCount + 1,
        completedDates: [...task.completedDates, _formatDate(DateTime.now())],
      );
      _totalPoints += task.points;
    }
  });
}

4.3 徽章等级判定

static BadgeLevel fromPoints(int points) {
  if (points >= 100) return BadgeLevel.diamond;
  if (points >= 60) return BadgeLevel.gold;
  if (points >= 30) return BadgeLevel.silver;
  return BadgeLevel.bronze;
}

4.4 奖励兑换流程

积分系统 应用 用户 积分系统 应用 用户 alt [积分足够] [积分不足] 点击兑换奖励 检查积分是否足够 扣除积分 返回成功 更新奖励状态 显示兑换成功 返回失败 提示积分不足

4.5 连续打卡统计

Widget _buildStreakCard() {
  Row(
    children: List.generate(7, (index) {
      final isCompleted = index < _streakDays % 7 || (_streakDays >= 7 && index < 7);
      return Container(
        margin: const EdgeInsets.only(left: 4),
        width: 24,
        height: 24,
        decoration: BoxDecoration(
          color: isCompleted ? Colors.orange : Colors.grey.shade200,
          shape: BoxShape.circle,
        ),
        child: Center(
          child: isCompleted
              ? const Icon(Icons.check, size: 14, color: Colors.white)
              : Text('${index + 1}', style: TextStyle(fontSize: 10)),
        ),
      );
    }),
  );
}

五、界面设计

5.1 主页面布局

┌─────────────────────────────────────┐
│  🎮 儿童技能打卡墙                   │
│     让学习像玩游戏一样有趣           │
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐    │
│  │  我的积分        🥈银牌     │    │
│  │    45 分                    │    │
│  │  ─────────────────────────  │    │
│  │  已完成  进行中  徽章       │    │
│  │   1个     5个    3个       │    │
│  └─────────────────────────────┘    │
├─────────────────────────────────────┤
│  🔥 连续打卡 7 天  太棒了!           │
│  ● ● ● ● ● ● ●                      │
├─────────────────────────────────────┤
│  今日进度                     1/6   │
│  ████████░░░░░░░░░░░░               │
├─────────────────────────────────────┤
│  快速打卡                     查看全部│
│  ┌─────┐┌─────┐┌─────┐┌─────┐     │
│  │ 🪥  ││ 🧸  ││ 📖  ││ 🏃  │     │
│  │自己 ││整理 ││阅读 ││跳绳 │     │
│  │刷牙 ││玩具 ││绘本 ││练习 │     │
│  │+5分 ││+5分 ││+10分││+8分 │     │
│  └─────┘└─────┘└─────┘└─────┘     │
├─────────────────────────────────────┤
│  我的徽章                      3/5  │
│  🌟 ⭐ 🔥 🔒 🔒                      │
└─────────────────────────────────────┘

5.2 任务页面布局

┌─────────────────────────────────────┐
│  技能任务                       6个任务│
├─────────────────────────────────────┤
│  🏠 生活技能                         │
│  ┌─────────────────────────────┐    │
│  │ 🧸 整理玩具        +5分  ➕ │    │
│  │    玩完后把玩具放回原位      │    │
│  │    ████████░░  5/7          │    │
│  └─────────────────────────────┘    │
├─────────────────────────────────────┤
│  📚 学习技能                         │
│  ┌─────────────────────────────┐    │
│  │ 📖 阅读绘本       +10分  ✓  │    │
│  │    每天阅读一本绘本          │    │
│  │    ██████████  7/7 已完成   │    │
│  └─────────────────────────────┘    │
├─────────────────────────────────────┤
│  ⚽ 运动技能                         │
│  ┌─────────────────────────────┐    │
│  │ 🏃 跳绳练习        +8分  ➕ │    │
│  │    每天跳绳50下              │    │
│  │    ████░░░░░░  3/7          │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘

5.3 成就页面布局

┌─────────────────────────────────────┐
│  成就徽章                       3/5  │
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐    │
│  │    🌟  ⭐  🔥  🔒  🔒       │    │
│  └─────────────────────────────┘    │
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐    │
│  │ 🌱 初出茅庐          已解锁  │    │
│  │    完成第一个任务            │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 🔥 坚持不懈          已解锁  │    │
│  │    连续打卡7天               │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ ⭐ 小能手            已解锁  │    │
│  │    完成10个任务              │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 🔒 全能冠军                  │    │
│  │    完成所有类别任务          │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘

5.4 奖励页面布局

┌─────────────────────────────────────┐
│  奖励商店               ⭐ 45 积分   │
├─────────────────────────────────────┤
│  ┌─────────────────────────────┐    │
│  │ 🍽️ 选择晚餐         已兑换  │    │
│  │    可以决定今晚吃什么        │    │
│  │    ⭐ 20 积分                │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 📖 额外故事时间      [兑换]  │    │
│  │    多听一个睡前故事          │    │
│  │    ⭐ 30 积分                │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 🎢 周末出游          [兑换]  │    │
│  │    选择一个周末出游地点      │    │
│  │    ⭐ 50 积分                │    │
│  └─────────────────────────────┘    │
│  ┌─────────────────────────────┐    │
│  │ 🎁 小礼物            [兑换]  │    │
│  │    获得一个小礼物            │    │
│  │    ⭐ 80 积分                │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘

六、动画效果

6.1 图标脉冲动画

_pulseController = AnimationController(
  vsync: this,
  duration: const Duration(milliseconds: 1500),
)..repeat(reverse: true);

AnimatedBuilder(
  animation: _pulseController,
  builder: (context, child) {
    return Container(
      decoration: BoxDecoration(
        boxShadow: [
          BoxShadow(
            color: Colors.red.withValues(
              alpha: 0.3 + _pulseController.value * 0.2
            ),
            blurRadius: 10 + _pulseController.value * 5,
          ),
        ],
      ),
    );
  },
)

七、运行与调试

7.1 运行命令

# 运行到鸿蒙设备
flutter run -d harmony lib/main_skill_checkin.dart

# 运行到Web服务器
flutter run -d web-server -t lib/main_skill_checkin.dart --web-port 8132

# 运行到Windows
flutter run -d windows -t lib/main_skill_checkin.dart

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

7.2 功能测试清单

测试项测试内容预期结果
任务打卡点击打卡按钮积分正确增加
进度显示查看任务进度进度条正确显示
成就解锁完成成就条件徽章正确解锁
奖励兑换兑换奖励积分正确扣除
连续打卡查看连续天数天数正确统计
徽章等级查看徽章等级等级正确判定

八、扩展方向

8.1 后端集成

┌─────────────┐     HTTPS      ┌─────────────┐
│   客户端    │ ←─────────────→ │   服务器    │
└─────────────┘                 └─────────────┘
       │                               │
       │  任务数据同步                 │
       │  用户认证                     │
       │  家庭成员管理                 │
       │  排行榜系统                   │
       ↓                               ↓
┌─────────────┐                 ┌─────────────┐
│  本地存储   │                 │  云端数据库 │
└─────────────┘                 └─────────────┘

8.2 功能扩展计划

版本功能描述
v1.1数据持久化本地数据库存储
v1.2家庭成员多个孩子管理
v1.3自定义任务家长自定义任务
v1.4排行榜家庭成员排行
v1.5提醒功能打卡提醒通知

8.3 高级功能

技能打卡墙

社交功能

数据分析

游戏化增强

好友排行

成就分享

家庭PK

学习报告

习惯分析

成长曲线

关卡系统

角色养成

道具系统


九、使用场景

9.1 典型使用场景

🎮 儿童技能打卡墙使用场景 🎮

场景描述使用频率
日常打卡完成每日技能任务每日多次
成就查看查看已解锁的成就每周一次
奖励兑换用积分兑换奖励不定期
进度回顾查看学习进度每周一次
习惯养成培养良好习惯持续进行

9.2 使用建议

┌─────────────────────────────────────────────────────────┐
│                   使用建议                              │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  📝 任务设置                                             │
│     • 根据孩子年龄设置合适任务                           │
│     • 任务难度要循序渐进                                 │
│     • 积分设置要合理                                     │
│     • 定期更新任务内容                                   │
│                                                          │
│  🎯 目标设定                                             │
│     • 设定短期和长期目标                                 │
│     • 目标要具体可衡量                                   │
│     • 及时给予正向反馈                                   │
│     • 适当增加挑战性                                     │
│                                                          │
│  🎁 奖励机制                                             │
│     • 奖励要有吸引力                                     │
│     • 积分门槛要合理                                     │
│     • 兑现承诺很重要                                     │
│     • 物质和精神奖励结合                                 │
│                                                          │
└─────────────────────────────────────────────────────────┘

十、游戏化设计原理

10.1 游戏化核心要素

要素说明应用
目标明确的目标设定任务目标
反馈即时的进度反馈进度条、积分
挑战适度的挑战难度任务难度分级
奖励完成后的奖励积分、徽章、奖励
进度可视化的进度进度条、等级

10.2 激励机制设计

🎯 激励机制设计 🎯

内在激励

  • 成就感:完成任务的自豪感
  • 进步感:看到自己的成长
  • 自主感:自己选择任务
  • 胜任感:能力得到认可

外在激励

  • 积分奖励:完成任务获得积分
  • 徽章收集:解锁成就徽章
  • 奖励兑换:积分兑换实物奖励
  • 社交认可:分享成就获得认可

十一、教育心理学

11.1 行为塑造理论

┌─────────────────────────────────────────────────────────┐
│                   行为塑造理论                          │
├─────────────────────────────────────────────────────────┤
│                                                          │
│  🎯 目标行为                                             │
│     • 将大目标分解为小步骤                               │
│     • 每个小步骤都可以完成                               │
│     • 逐步提高行为要求                                   │
│                                                          │
│  ⭐ 正向强化                                             │
│     • 完成行为后给予奖励                                 │
│     • 奖励要及时和一致                                   │
│     • 逐步减少外在奖励                                   │
│                                                          │
│  📈 行为巩固                                             │
│     • 重复练习形成习惯                                   │
│     • 内化行为动机                                       │
│     • 建立自我监控能力                                   │
│                                                          │
└─────────────────────────────────────────────────────────┘

11.2 自我决定理论

心理需求满足方式应用设计
自主性自己选择可选择任务
胜任感能力提升进度反馈
关联性社交连接成就分享

十二、总结

儿童技能打卡墙应用通过"把学习变成闯关游戏"的核心理念,为家长和孩子提供了一款创新的亲子教育工具。应用涵盖技能任务、打卡系统、积分系统、成就徽章、奖励商店、连续打卡六大核心功能,让孩子在游戏中学习,在学习中成长。

应用采用红色主题,象征热情与活力。主页面清晰展示积分卡片、连续打卡、今日进度、快速打卡和我的徽章。任务页面按技能分类展示所有任务,每个任务都显示进度条和积分奖励。成就页面展示所有成就徽章,已解锁的徽章显示彩色,未解锁的显示灰色锁定状态。奖励商店页面展示可兑换的奖励,孩子可以用积分兑换心仪的奖励。

技能分类涵盖生活技能、学习技能、运动技能、艺术技能、社交技能、自理技能六大类别,全面覆盖儿童成长所需的各项技能。徽章等级分为铜牌、银牌、金牌、钻石四个等级,根据积分自动判定,给孩子持续进步的动力。

游戏化设计借鉴了目标设定、进度反馈、成就解锁、奖励兑换等核心元素,将枯燥的学习任务转化为有趣的游戏挑战。通过积分奖励、徽章收集、奖励兑换等激励机制,激发孩子的内在动力,培养自主学习能力和良好习惯。

应用采用Material Design 3设计规范,遵循Flutter最佳实践,代码结构清晰,易于维护和扩展。后续版本计划增加数据持久化、家庭成员管理、自定义任务、排行榜、提醒功能等,为家长和孩子提供更完整的亲子教育体验。

通过儿童技能打卡墙应用,孩子可以在游戏中学习技能,培养良好习惯,获得成就感,建立自信心,让学习成为一件快乐的事情。

让学习像玩游戏一样有趣 🎮

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐