Streak灵活排程完全指南:每日、每周、自定义星期与每N天打卡一次,哪个更适合你

原创2026-10-25 16:16:381,418 阅读

Streak灵活排程完全指南:每日、每周、自定义星期与每N天打卡一次,哪个更适合你

Streak 是一款免费、开源、完全离线运行于手机和桌端的 Flutter 习惯打卡应用。它的排程功能支持每日、每周、每月、自定义星期与每 N 天等多种打卡节奏,帮你把"喝水、读书、健身"等习惯安排得恰到好处。本文带你完整了解 Streak 的 5 种排程方式、各自的适用场景,以及如何搭配休息日与连击(Streak)规则。

Streak习惯打卡应用横幅:手机与桌面端的每日习惯列表、热力图与专注模式界面

一、Streak 排程功能总览:5 种节奏一次看懂

打开任意习惯的编辑页,在「频率」区域会看到 5 个排程选项(对应源码中的 HabitInterval 枚举):

排程类型 中文标签 含义 典型场景
daily 每日 每天都是打卡日 喝水、刷牙、冥想
weekly 每周 一周内完成指定次数即可 每周运动 3 次
monthly 每月 一月内完成指定次数即可 每月读 2 本书、每月记账
weekdays 天数 只选特定星期几打卡 仅工作日健身
everyXDays 间隔 每 N 天/周/月打卡一次 每 3 天浇花、每 2 周测体重

这 5 种选项的完整定义位于 habit.dart,排程选择界面(IntervalSelector)实现在 habit_form_schedule.dart。

二、每日打卡:最简单,也最容易断连击

每日模式无需任何额外设置,从今天起每一天都是打卡日。

连击规则:连击按"连续天数"计算,只要某一天完成,连击延续;漏掉一天(且不是休息/休假)则连击中断。这是最能培养肌肉记忆的节奏,适合所有"轻量级、高频次"的习惯。

Streak今日习惯打卡组件:显示每日习惯完成进度3/5与连击火焰数

💡 小提示:如果你希望某些星期几固定不打卡,可以配合后文提到的「休息日」功能,而不是改排程类型。

三、每周 N 次:给生活留点弹性

选择「每周」后,会出现一个步进器,让你设定 每周完成次数(1~6 次,默认 3 次)。

连击规则:只要一周内完成的次数达到设定值,就算这一"周"达标;连续的达标周构成连击,具体计数逻辑可参考 habit.dart 中的 _currentStreak 实现。

Streak本周打卡组件:习惯按周一至周日逐日显示打勾进度与周完成率

适用场景:每周跑步 3 次、每周冥想 2 次——"必须完成、但不必每天做"的习惯用它最舒服。

顺带一提:每月 N 次

「每月」与「每周」是姊妹模式,步进器范围为 每月 1~25 次(默认 10 次),连击按"连续的达标月"计算。适合阅读、大扫除、月结账单这类低频习惯。

四、自定义星期:锁定你的固定节奏

选择「天数」后,界面会出现一排星期按钮(周一到周日),点选哪些天,就只在哪几天打卡。

连击规则:连击只统计"排定日"——只有选中的星期几才算数,未选的日子自动跳过,不会打断连击。判断逻辑见 isScheduledOn。

适用场景:

  • 只在工作日(周一~周五)通勤跑步;
  • 只在周六周日做家庭大扫除;
  • 周二、周四两次健身(隔天节奏 + 固定星期)。

五、每 N 天打卡:最灵活的自定义间隔

「间隔」模式是 Streak 排程中最强大的一种,包含 4 个设置项:

  1. 单位选择:天(2~90)、周(1~26)或月(1~24);
  2. 间隔数值:例如"每 3 天"、"每 2 周"、"每 2 个月";
  3. 起始日期(Starts on):设定第一个打卡日,之后的到期日按间隔推算,选择器实现见 ScheduleStartRow;
  4. 两个可选开关:
    • 「从上次完成起算」:不固定日期,而是每次完成后重新计时 N 个单位。适合"想起来就做、做完算数"的弹性习惯;
    • 「每月同一星期几」(仅月单位时出现):例如"每月第二个周六",自动适配 28 天或 31 天的月份。

连击规则:按"排定日是否满足"逐日回溯,并且支持"提前完成"——在到期日之前几天内完成,同样视为该周期达标(isCoveredOn)。

适用场景:每 3 天浇花、每 7 天换空调滤芯、每 3 个月体检、每 2 周打一次疫苗。

六、怎么选?一张表帮你决定

你的习惯 推荐排程 理由
喝水、刷牙、背单词 每日 高频轻量,需要每天都做
跑步、健身、撸铁 每周 N 次 有总量要求,但可挑日子
阅读、写作、记账 每月 N 次 低频,按月结算更自然
通勤锻炼、值班 自定义星期 只在固定星期几发生
浇花、体检、大扫除 每 N 天/周/月 按固定间隔周期发生

Streak习惯热力图组件:紫色格子展示长期打卡历史,直观呈现坚持程度

七、进阶:休息日、休假与排程的配合

  • 休息日(Rest Days):在习惯详情中可为某些星期几标记休息,这些天不打卡也不会断连击,设置面板位于 vacation_sheet.dart。
  • 休假(Vacation):设定一段连续日期为休假,期间所有未完成的排定日均视为"中性",连击无缝延续。
  • 提醒联动:任何排程下都可以为该习惯添加提醒;对非排定日,提醒会智能静默(silencesRemindersOn),避免"周六还提醒我周一的健身"。

八、排程如何影响你的数据

Streak 的强度(Strength)与一致性(Consistency)指标只统计排定日:90 天窗口内,越近的完成权重越高,休息与休假自动剔除。也就是说,选对排程 = 更真实的数据。相关规则集中在 habit.dart,排程与连击的完整测试用例可以阅读 scheduling_test.dart 与 schedule_start_test.dart。

总结

Streak 的 5 种排程覆盖了几乎所有习惯的节奏:每日建基础、每周 N 次留弹性、每月 N 次管低频、自定义星期锁节奏、每 N 天做周期。在 habit_form_page.dart 对应的频率区域,你随时可以切换类型——从今天起,给每个习惯挑一个最适合它的节奏,连击会替你说话。🔥

登录后查看全文
streak