ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Streak 三种习惯类型全解析:正向习惯、戒除坏习惯与量化目标追踪指南

Streak 三种习惯类型全解析:正向习惯、戒除坏习惯与量化目标追踪指南

【免费下载链接】streak

Minimal, private, ad-free habit tracker built with Flutter — track habits, build streaks, all offline.

项目地址:https://gitcode.com/gh_mirrors/streak2/streak
点击查看免费下载

Streak 是一款免费、开源、完全离线的 Flutter 习惯追踪应用,它的核心设计在于提供三种习惯类型:普通(正向)习惯、戒除习惯和可量化习惯。选对类型,打卡逻辑、连胜(streak)计算和统计方式都会随之改变。本文带你一次搞懂这三种习惯类型分别是什么、怎么用、该选哪个。

三种习惯类型怎么选?一张表看懂

在 Streak 中新建习惯时,第一步就是从三个选项里挑选类型(对应源码中的HabitKind枚举:positive、negative、quantitative,见 habit.dart)。中文界面下分别显示为:普通、戒除、可量化:

类型中文名适用场景打卡逻辑
普通(Positive)普通每天要"做"的事:背单词、运动、冥想点一下 = 完成,连胜 +1
戒除(Avoid)戒除要"忍住不做"的事:戒烟、戒糖、戒酒不打卡 = 达标,点了才记录"破戒"
可量化(Amount)可量化需要记录"数量"的事:喝水 8 杯、读书 50 页累计数值 ≥ 每日目标 = 完成

⚠️ 注意:习惯一旦开始积累数据,类型就会被锁定(kind_locked_hint),避免历史统计口径混乱。建议建好第一个习惯时就想清楚类型。

类型一:普通习惯(Positive)——最简单的一键打卡

这是默认类型,也是最符合直觉的:到了就点一下,一天算完成。

日常玩法

  • 一键打卡:从主页、桌面小组件甚至通知栏按钮都能直接记录,无需打开完整界面;
  • 清单模式(Checklists):可以把一个大习惯拆成若干子步骤(substeps),全部勾选才算完成——比如"晨间例程 = 拉伸 + 冥想 + 复盘";
  • 专注联动:普通习惯可以绑定 Focus 专注计时器,完成一次专注会话自动算作当日完成;
  • 灵活排期:支持每日、每周 N 次、每月 N 次、指定星期、每 N 天一次等模式,非排期日自动不计入连胜。
今日任务栏示意 ┌─────────────────────────────┐ │ ✅ 睡前阅读 🔥 38 连胜 │ │ 📖 晨间例程 (3/4 步骤) │ │ ⏱ 专注学习 25 分钟 │ └─────────────────────────────┘

普通习惯还有一个隐藏福利:习惯强度(Strength)评分。Streak 会用最近 90 天的完成记录做指数衰减加权(半衰期 12 天),算出 0–100 的"一致性"分数,比单纯的连胜天数更能反映你真实的表现,相关逻辑见 habit.dart。

类型二:戒除习惯(Avoid)——反向打卡,破戒才要点

戒除类型是整个 Streak 最有特色的设计:目标不是"做了多少",而是"忍住了多少"。

反直觉的打卡逻辑

官方提示写得很直白(见 habit_form_kind.dart):

默认每日达标,连胜天数自动累积。点击打卡视为破戒,当日会标红,支持撤销操作。

也就是说:

  1. 什么都不做,就是成功——连胜(clean days)自己涨;
  2. 某天没忍住?点一下打卡按钮记录一次破戒(relapse),该日在日历上标红,连胜中断;
  3. 手滑误点?可以撤销,破戒记录支持删除;
  4. 破戒当天的日期单元格在 habit.dart 中定义为"存在记录即破戒",与正向习惯完全相反。

三件套:破戒次数、省钱统计、坚持目标

戒除习惯自带三个实用模块(统计卡片见 avoid_stats.dart 与 saved_money.dart):

  • 破戒次数(Relapses):按月统计你"没忍住"的频率,直观看到哪些月份最容易破功;
  • 每日花费 → 已省金额:建习惯时可以填"每天花多少钱"(例如一包烟 15 元),Streak 会自动计算坚持天数 × 每日花费 = 已省金额,戒得越久,绿色数字越大,是很强的正反馈;
  • 记录实际支出:开启后,每次破戒可以顺带记录当天真的花了多少钱,月底能看到"破戒成本";
  • 坚持天数目标(Clean Goal):预设 7 / 14 / 30 / 60 / 90 天(见 habit_form_kind.dart),达到后卡片会给出"再坚持一轮"的提示,把大目标拆成小里程碑。

类型三:可量化习惯(Amount)——不只有"做没做",还有"做了多少"

当习惯的完成标准是数量而不是"是/否"时,就选可量化类型。

五种预设模板,覆盖 90% 场景

新建时可以直接点选模板(见 quant_preset_grid.dart):

模板单位典型用法
喝水(Water)毫升 ml每天 2000ml,卡片上有水杯进度动画
阅读(Reading)页 pages支持绑定一本书的总页数,读完自动记录进"读完书单"
时间(Time)分钟 min冥想 20 分钟、学习 90 分钟
步数(Steps)步安卓设备上可自动读取健康数据
通用(Generic)自定义单位俯卧撑、单词数、克数……单位自己填

三个让量化更灵活的开关

  • 每日目标(Daily Goal):比如"8 杯水",累计到 8 才算当天完成,卡片进度环会随次数加深颜色(着色逻辑见 quant_progress.dart);
  • 总目标(Total Goal):给整个习惯设一个"大结局",例如读满 1000 页、累计 50 次——达成前进度条一直在走,很适合阶段性挑战;
  • 无每日目标 / 任意数值都算完成:不想定死目标?关掉每日目标后,只要记录了任意数量就算完成。这样连胜依然保得住,同时数值会照常累计进统计。

阅读习惯的特别玩法

选"阅读"模板并填写总页数后,Streak 会把每日累计的页数映射到一本书的进度上:读满即"读毕",自动进入读完记录,可以持续开新书——相当于一个轻量的读书进度条(见 habit.dart)。

实战指南:三步选对习惯类型

  1. 问自己:完成标准是"是/否"还是"数量"?是/否 → 普通或戒除;数量 → 可量化;
  2. 问自己:我是要"做它"还是"戒它"?要做 → 普通;要忍住不做 → 戒除;
  3. 配套设置别漏:
    • 戒除习惯记得填每日花费和坚持目标,省下的钱就是最好的动力;
    • 可量化习惯建议同时设每日目标 + 总目标,短中长期激励都有;
    • 出差/休假?所有类型都支持假期模式(Vacation),暂停期间不计入连胜,回来无缝衔接。

常见问题

Q1:为什么我的习惯类型改不了了?A:一旦习惯产生数据,类型会被锁定。这是为了保证连胜、统计的口径一致。确实要换类型,可以归档旧习惯后重新创建一个。

Q2:戒除习惯漏点了"破戒"怎么办?A:点进历史日期可以补记任意一天的破戒,也可以撤销误记的记录。

Q3:可量化习惯超额完成了怎么算?A:达到每日目标即当天完成;超出部分会累计进总目标与统计图表,不会浪费。

Q4:这三种类型的统计数据在哪里看?A:进入习惯详情页可查看连胜、完成率、活动热力图,以及各类型专属卡片(戒除类的省钱/破戒统计、量化类的目标进度),分享卡片(share card)也支持一键导出成图片。


三种习惯类型覆盖了"养成、戒除、量化"三类最真实的生活目标。打开 Streak 新建一个习惯,先花 30 秒想清楚类型——这比之后任何调参都重要。

延伸阅读:

  • 习惯数据模型:lib/features/habits/data/habit.dart
  • 类型选择与戒除配置界面:lib/features/habits/widgets/habit_form_kind.dart
  • 戒除统计卡片:lib/features/habits/widgets/avoid_stats.dart
  • 量化进度计算:lib/features/habits/data/quant_progress.dart
  • 项目总览:README.md

【免费下载链接】streak

Minimal, private, ad-free habit tracker built with Flutter — track habits, build streaks, all offline.

项目地址:https://gitcode.com/gh_mirrors/streak2/streak
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表