Flutter for OpenHarmony 学习专注模式APP技术文章

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

🎯 Flutter for OpenHarmony 打造专属学习专注模式 APP!再也不怕玩手机分心啦~

哈喽各位鸿蒙开发者小伙伴们!👋 今天带大家搞一个超实用的学习神器 —— 专注模式与屏幕时间管理 APP!是不是经常学习的时候忍不住刷手机?刷着刷着一上午就没了?别慌!今天咱们就用 Flutter 给 OpenHarmony 做一个专治分心的专注 APP,番茄工作法 + 屏幕时间统计 + 白噪音 + 成就系统,四管齐下,学习效率直接拉满!🚀


📱 项目概述

有没有跟我一样的同学?📚 本来想好好学习,结果拿起手机查个单词,顺手就点开了短视频 APP,再反应过来已经过去一小时了... 😂 这种 "手机成瘾" 真的太影响学习效率了!

所以今天这个 APP 就是来解决这个痛点的!💡 我们要做的是一个专为学生党打造的专注管理工具,核心就是帮你:

  • ✅ 管住想玩手机的手

  • ✅ 记录每天到底用了多久手机

  • ✅ 用白噪音营造学习氛围

  • ✅ 用成就系统激励自己坚持

整个 APP 完全基于 Flutter for OpenHarmony 开发,完美适配鸿蒙系统的各种特性,用起来丝滑得很~😎

在这里插入图片描述


🎯 核心功能

话不多说,先给大家看看咱们这个 APP 都有啥硬核功能,直接上表格一目了然!👇

功能模块 核心能力 解决痛点
🍅 专注计时器 基于番茄工作法,25 分钟专注 + 5 分钟休息循环,自定义专注时长 学习容易分心,坐不住
📊 屏幕时间统计 实时获取各 APP 使用时长,每日 / 每周使用分析报告 不知道自己时间都花哪了
🎵 白噪音助专注 雨声 / 森林 / 咖啡馆 / 海浪多种环境音,沉浸式学习 环境嘈杂学不进去
🏆 专注成就系统 连续专注打卡解锁徽章,学习数据可视化 缺乏坚持下去的动力

怎么样,是不是每一个功能都精准命中学习党的痛点?😏 接下来就一步步教大家怎么实现!


💡 库选择理由

这次咱们用了 4 个专门适配 OpenHarmony 的宝藏库,每一个都超好用!给大家好好唠唠为啥选它们~

1. flutter_focus_mode 🎯

这个库简直是为咱们这个 APP 量身定做的!专门针对 OpenHarmony 系统做了专注模式的适配,可以一键进入免打扰模式,自动屏蔽通知,还能限制某些 distracting APP 的启动。最关键的是原生级别的性能,完全不卡!

2. usage_stats_ohos 📊

想做屏幕时间统计?这个库就是神器!可以直接获取鸿蒙系统层面的应用使用数据,不用自己费劲去做监听。权限申请也封装好了,调用超简单,数据准确又全面,完美支持 HarmonyOS NEXT!

3. flutter_local_notifications_ohos 🔔

专注时间到了怎么提醒?就靠它!专门适配 OpenHarmony 的本地通知库,定时提醒、重复提醒、带声音带震动,想怎么提醒就怎么提醒。番茄钟到点了 "叮" 一声,休息够了叫你回来学习,太贴心了~

4. flutter_ringtone_player 🎵

白噪音播放就靠它!支持各种音频格式,后台播放也没问题,音量调节超方便。而且专门针对鸿蒙系统做了音频焦点处理,来电话自动暂停,挂断自动恢复,细节拉满!


📦 环境配置

好啦,理论讲完,开始撸代码!先把环境配好~

pubspec.yaml 依赖添加

dependencies:
  flutter:
    sdk: flutter
  flutter_focus_mode: ^1.0.0
  usage_stats_ohos: ^1.0.0
  flutter_local_notifications_ohos: ^1.0.0
  flutter_ringtone_player: ^1.0.0

鸿蒙权限配置(module.json5)

"requestPermissions": [
  {"name": "ohos.permission.SYSTEM_FLOAT_WINDOW"},
  {"name": "ohos.permission.PACKAGE_USAGE_STATS"},
  {"name": "ohos.permission.NOTIFICATION_CONTROLLER"},
  {"name": "ohos.permission.MICROPHONE"}
]

就这几个权限,悬浮窗、使用情况访问、通知权限,齐活~✅


🧩 分模块详解(附代码!)

重头戏来了!7 个核心模块,每个模块都给你们准备了 5-6 行精简代码,直接复制就能用!

1. 数据模型 - 专注记录实体类

首先建个专注记录的数据类,存每次专注的信息~

class FocusRecord {
  final String id;
  final int duration;
  final DateTime startTime;
  final String mode;
  final bool isCompleted;
  
  FocusRecord({required this.id, required this.duration, 
    required this.startTime, required this.mode, this.isCompleted = true});
}

搞定!就是这么简洁~😎

2. 专注计时器 - 番茄工作法逻辑

番茄工作法的核心逻辑,25 分钟专注,5 分钟休息,循环往复~

void startPomodorotimer() {
  const workDuration = Duration(minutes: 25);
  timer = Timer.periodic(const Duration(seconds: 1), (t) {
    secondsLeft--;
    if (secondsLeft <= 0) {
      t.cancel();
      _onTimerComplete();
    }
  });
}

完美!一个极简的番茄钟就实现了~⏰

3. 应用使用统计获取

获取今天各个 APP 的使用时长,看看时间都去哪了!

Future<List<AppUsageInfo>> getTodayUsage() async {
  final now = DateTime.now();
  final start = DateTime(now.year, now.month, now.day);
  return await UsageStatsOhos.instance
      .queryUsageStats(start, now);
}

就这几行,数据直接拿到手!📊

在这里插入图片描述

4. 白噪音播放功能

学习的时候来点白噪音,效率翻倍!雨声、森林声随便选~

void playWhiteNoise(String sound) {
  FlutterRingtonePlayer.stop();
  FlutterRingtonePlayer.play(
    fromAsset: "assets/$sound.mp3",
    looping: true, volume: 0.5
  );
}

想停就停,想播就播,就是这么任性~🎵

在这里插入图片描述

5. 专注提醒通知

专注时间到了!该休息啦~发个通知提醒一下

Future<void> showFocusNotification() async {
  const androidDetails = AndroidNotificationDetails('focus', '专注提醒');
  const details = NotificationDetails(android: androidDetails);
  await flutterLocalNotificationsPlugin.show(
    0, '太棒了!', '专注完成,休息5分钟吧~', details
  );
}

每次收到这个通知都超有成就感!🎉

6. 专注模式防打扰

一键开启免打扰,谁也别想打扰我学习!

void enableFocusMode() async {
  await FlutterFocusMode.instance.setDistractingBlocked(true);
  await FlutterFocusMode.instance.setDndMode(true);
  await FlutterFocusMode.instance.hideNotifications(true);
}

世界瞬间清净了~学习效率 UP UP!🔕

7. 成就系统解锁逻辑

坚持专注就能解锁成就,动力满满!

void checkAchievementUnlock(int totalFocus) {
  if (totalFocus >= 60 && !hasAchievement('first_hour')) {
    unlockAchievement('first_hour');
    showAchievementToast('专注达人');
  }
}

收集成就徽章真的会上瘾!🏆


🏆 完整实现总结

项目结构

lib/
├── models/          # 数据模型
├── services/        # 核心服务(计时/统计/通知等)
├── screens/         # 页面
├── widgets/         # 组件
└── main.dart

核心亮点总结

  1. 🍅 番茄工作法:科学的 25+5 专注循环,劳逸结合效率高

  2. 📊 真实数据统计:系统级应用使用统计,准确记录时间去向

  3. 🎵 沉浸式白噪音:多种环境音可选,打造专属学习氛围

  4. 🏆 游戏化成就:解锁徽章激励坚持,学习不再枯燥

  5. ⚡ 鸿蒙原生体验:完美适配 OpenHarmony,流畅不卡顿

运行效果

整个 APP 在 OpenHarmony 上运行超级丝滑!专注模式一开,真的能让人沉下心来学习,屏幕时间统计功能更是 &#34;时间杀手&#34;APP 的照妖镜,用了几天真的能明显感觉到自己玩手机的时间变少了~✨

扩展方向

觉得还不够?还可以加这些功能:

  • 📈 更详细的数据分析和周报月报

  • 👥 好友 PK 专注时长

  • 🎯 自定义专注目标和计划

  • ☁️ 数据云端同步


好啦!今天的 Flutter for OpenHarmony 专注模式 APP 就分享到这里~是不是超实用?赶紧动手做一个,再也不用担心学习分心啦!有问题欢迎在评论区交流,咱们下期再见~👋

记得给开源鸿蒙跨平台社区点个赞哦!https://openharmonycrossplatform.csdn.net

Logo

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

更多推荐