节气生活应用


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

一、项目概述

运行效果图

image-20260408180425136

image-20260408180430569

image-20260408180434846

image-20260408180439090

image-20260408180443282

1.1 应用简介

节气生活是一款基于中国传统二十四节气的生活指导应用,旨在帮助用户顺应自然规律,按照节气安排生活节奏。应用结合了传统节气文化与现代生活方式,为用户提供个性化的养生建议、饮食推荐和活动安排。

应用以绿色为主色调,象征自然与生机。界面设计简洁优雅,融入了大量中国传统文化元素。通过智能算法识别当前节气,为用户提供实时的节气信息和生活指导,帮助用户在快节奏的现代生活中找到与自然和谐相处的方式。

1.2 核心功能

功能模块功能描述实现方式
节气识别自动识别当前节气日期计算算法
今日首页展示当前节气信息卡片式布局
节气日历24节气完整展示网格布局
养生建议节气养生知识推荐列表展示
美食推荐节气饮食建议横向滚动
活动建议节气传统活动标签展示
任务管理节气生活任务任务列表
知识科普节气文化知识文章展示

1.3 二十四节气

应用包含完整的二十四节气信息:

季节节气时间含义
立春2月3-5日春季开始
雨水2月18-20日降雨开始
惊蛰3月5-7日春雷乍动
春分3月20-22日昼夜平分
清明4月4-6日天气清朗
谷雨4月19-21日雨生百谷
立夏5月5-7日夏季开始
小满5月20-22日麦粒饱满
芒种6月5-7日有芒作物成熟
夏至6月21-22日白昼最长
小暑7月6-8日天气炎热
大暑7月22-24日最热时期
立秋8月7-9日秋季开始
处暑8月22-24日暑气渐消
白露9月7-9日露凝而白
秋分9月22-24日昼夜平分
寒露10月8-9日露水寒冷
霜降10月23-24日开始降霜
立冬11月7-8日冬季开始
小雪11月22-23日开始降雪
大雪12月6-8日雪量增多
冬至12月21-23日白昼最短
小寒1月5-7日天气寒冷
大寒1月20-21日最冷时期

1.4 技术栈

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

1.5 项目结构

lib/
└── main_solar_terms_life.dart
    ├── SolarTermsLifeApp           # 应用入口
    ├── SolarTermSeason             # 季节枚举
    ├── SolarTerm                   # 节气模型
    ├── DailyTask                   # 每日任务模型
    ├── SolarTermsLifeHomePage      # 主页面(底部导航)
    ├── _buildHomePage              # 今日页面
    ├── _buildCalendarPage          # 节气日历页面
    ├── _buildTasksPage             # 任务页面
    └── _buildKnowledgePage         # 知识页面

二、设计理念

2.1 天人合一思想

天人合一

顺应自然

节气养生

生活节奏

春生夏长

秋收冬藏

因时制宜

饮食调养

起居有常

情志调摄

早睡早起

适度运动

劳逸结合

2.2 节气生活理念

节气生活

春季养生

养肝护肝

调畅情志

适度运动

防风保暖

夏季养生

养心安神

清热解暑

晚睡早起

防暑降温

秋季养生

养肺润燥

早睡早起

防寒保暖

滋阴润燥

冬季养生

养肾防寒

早睡晚起

温补为主

适度运动

2.3 四季色彩体系

应用采用四季色彩体系,每个季节都有独特的主题色:

季节主色辅助色象征意义
#81C784 (嫩绿)#A5D6A7生机、希望、新生
#FFB74D (橙黄)#FFCC80热情、活力、阳光
#FFB300 (金黄)#FFD54F收获、成熟、稳重
#64B5F6 (天蓝)#90CAF9宁静、纯洁、内敛

2.4 节气文化传承

节气文化

天文历法

农业生产

民俗活动

养生智慧

太阳黄经

时间节点

农事指导

物候观察

传统习俗

节庆活动

饮食养生

起居调养


三、系统架构

3.1 整体架构图

Data Layer

Business Layer

Presentation Layer

主页面
SolarTermsLifeHomePage

今日页

节气日历页

任务页

知识页

当前节气卡片

倒计时卡片

养生建议

美食推荐

节气网格

节气详情

任务列表

知识卡片

节气识别引擎
日期计算

推荐系统
养生建议

任务管理
任务状态

SolarTerm
节气模型

DailyTask
任务模型

SolarTermSeason
季节枚举

3.2 类图设计

manages

manages

belongs to

SolarTermsLifeApp

+Widget build()

«enumeration»

SolarTermSeason

+spring 春

+summer 夏

+autumn 秋

+winter 冬

+String label

+String emoji

+Color color

SolarTerm

+int index

+String name

+String pinyin

+String date

+SolarTermSeason season

+String meaning

+String phenomenon

+List<String> foods

+List<String> activities

+List<String> healthTips

+String poem

+String poemAuthor

DailyTask

+String id

+String title

+String description

+String category

+bool completed

+DateTime date

SolarTermsLifeHomePage

-int _currentIndex

-List<SolarTerm> _solarTerms

-List<DailyTask> _tasks

-SolarTerm _currentTerm

-SolarTerm _nextTerm

-int _daysToNextTerm

-AnimationController _rotationController

+SolarTerm _getCurrentSolarTerm()

+SolarTerm _getNextSolarTerm()

+int _calculateDaysToNextTerm()

3.3 节气识别流程

节气数据日期计算节气引擎应用启动节气数据日期计算节气引擎应用启动初始化节气数据加载24节气信息获取当前节气计算当前日期匹配节气日期返回当前节气计算下一节气查找下一节气返回下一节气计算倒计时返回天数返回节气信息

四、核心功能实现

4.1 节气数据模型

节气模型包含完整的节气信息:

class SolarTerm {
  final int index;              // 节气序号(1-24)
  final String name;            // 节气名称
  final String pinyin;          // 拼音
  final String date;            // 日期范围
  final SolarTermSeason season; // 所属季节
  final String meaning;         // 节气含义
  final String phenomenon;      // 物候现象
  final List<String> foods;     // 节气美食
  final List<String> activities;// 节气活动
  final List<String> healthTips;// 养生建议
  final String poem;            // 节气诗词
  final String poemAuthor;      // 诗词作者
}

节气数据示例:

SolarTerm(
  index: 1,
  name: '立春',
  pinyin: 'Lì Chūn',
  date: '2月3-5日',
  season: SolarTermSeason.spring,
  meaning: '春季开始,万物复苏',
  phenomenon: '东风解冻,蛰虫始振,鱼陟负冰',
  foods: ['春饼', '萝卜', '姜', '葱', '韭菜'],
  activities: ['迎春', '咬春', '踏青', '放风筝'],
  healthTips: ['早睡早起', '适当运动', '调养肝脏', '防寒保暖'],
  poem: '春度春归无限春,今朝方始觉成人。',
  poemAuthor: '罗隐',
)

4.2 节气识别算法

节气识别是应用的核心功能:

SolarTerm _getCurrentSolarTerm() {
  final now = DateTime.now();
  final month = now.month;
  final day = now.day;

  // 24节气的日期范围
  final solarTermDates = [
    [2, 4], [2, 19], [3, 6], [3, 21], [4, 5], [4, 20],
    [5, 6], [5, 21], [6, 6], [6, 21], [7, 7], [7, 23],
    [8, 8], [8, 23], [9, 8], [9, 23], [10, 8], [10, 24],
    [11, 8], [11, 22], [12, 7], [12, 22], [1, 6], [1, 20],
  ];

  // 从后往前查找当前节气
  for (int i = solarTermDates.length - 1; i >= 0; i--) {
    final termMonth = solarTermDates[i][0];
    final termDay = solarTermDates[i][1];

    if (month > termMonth || (month == termMonth && day >= termDay)) {
      return _solarTerms[i];
    }
  }

  // 如果没找到,返回最后一个节气(大寒)
  return _solarTerms[23];
}

4.3 倒计时计算

计算距离下一个节气的天数:

int _calculateDaysToNextTerm() {
  final now = DateTime.now();
  final nextTermIndex = _nextTerm.index - 1;

  // 获取下一节气的日期
  final solarTermDates = [
    [2, 4], [2, 19], [3, 6], [3, 21], [4, 5], [4, 20],
    [5, 6], [5, 21], [6, 6], [6, 21], [7, 7], [7, 23],
    [8, 8], [8, 23], [9, 8], [9, 23], [10, 8], [10, 24],
    [11, 8], [11, 22], [12, 7], [12, 22], [1, 6], [1, 20],
  ];

  final nextDate = solarTermDates[nextTermIndex];
  var nextTermDate = DateTime(now.year, nextDate[0], nextDate[1]);

  // 如果下一节气日期已过,则计算下一年的
  if (nextTermDate.isBefore(now)) {
    nextTermDate = DateTime(now.year + 1, nextDate[0], nextDate[1]);
  }

  return nextTermDate.difference(now).inDays;
}

4.4 当前节气卡片

展示当前节气信息的核心组件:

Widget _buildCurrentTermCard() {
  return Container(
    width: double.infinity,
    padding: const EdgeInsets.all(24),
    decoration: BoxDecoration(
      gradient: LinearGradient(
        colors: [
          _currentTerm.season.color,
          _currentTerm.season.color.withValues(alpha: 0.7),
        ],
      ),
      borderRadius: BorderRadius.circular(24),
    ),
    child: Column(
      children: [
        // 节气名称和拼音
        Row(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(_currentTerm.season.emoji, style: TextStyle(fontSize: 32)),
            SizedBox(width: 12),
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Text(
                  _currentTerm.name,
                  style: TextStyle(fontSize: 36, fontWeight: FontWeight.bold),
                ),
                Text(_currentTerm.pinyin),
              ],
            ),
          ],
        ),
        // 节气含义
        Text(_currentTerm.meaning),
        // 节气序号和日期
        Container(
          child: Text('第${_currentTerm.index}个节气 · ${_currentTerm.date}'),
        ),
      ],
    ),
  );
}

4.5 节气美食推荐

展示节气相关的美食:

Widget _buildFoodRecommendations() {
  return Column(
    crossAxisAlignment: CrossAxisAlignment.start,
    children: [
      Text('节气美食', style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold)),
      SizedBox(height: 12),
      SizedBox(
        height: 120,
        child: ListView.builder(
          scrollDirection: Axis.horizontal,
          itemCount: _currentTerm.foods.length,
          itemBuilder: (context, index) {
            final food = _currentTerm.foods[index];
            return Container(
              width: 100,
              margin: EdgeInsets.only(right: 12),
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.circular(16),
              ),
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  // 美食图标
                  Container(
                    width: 50,
                    height: 50,
                    decoration: BoxDecoration(
                      color: _currentTerm.season.color.withValues(alpha: 0.1),
                      shape: BoxShape.circle,
                    ),
                    child: Text(_getFoodEmoji(food), style: TextStyle(fontSize: 24)),
                  ),
                  SizedBox(height: 8),
                  Text(food, style: TextStyle(fontSize: 13)),
                ],
              ),
            );
          },
        ),
      ),
    ],
  );
}

五、UI设计规范

5.1 配色方案

应用采用四季色彩体系:

季节主色RGB用途
#81C784129,199,132春季节气主题色
#FFB74D255,183,77夏季节气主题色
#FFB300255,179,0秋季节气主题色
#64B5F6100,181,246冬季节气主题色

5.2 字体规范

元素字号字重颜色
节气名称36pxBold季节主题色
页面标题24-28pxBold#000000
节气拼音14-16pxRegular#666666
节气含义16pxRegular#FFFFFF
养生建议15pxRegular#000000
辅助文字12-13pxRegular#999999

5.3 组件规范

5.3.1 节气卡片
┌─────────────────────────────────────────┐
│                                         │
│            🌸  立春                     │
│               Lì Chūn                   │
│                                         │
│        春季开始,万物复苏                │
│                                         │
│         第1个节气 · 2月3-5日             │
│                                         │
└─────────────────────────────────────────┘
5.3.2 倒计时卡片
┌─────────────────────────────────────────┐
│  📅 下一个节气                           │
│                                         │
│     雨水          │        15           │
│   2月18-20日      │       天后          │
│                                         │
└─────────────────────────────────────────┘
5.3.3 养生建议卡片
┌─────────────────────────────────────────┐
│  ①  早睡早起                             │
│      顺应节气,调整作息时间               │
└─────────────────────────────────────────┘

六、交互设计

6.1 应用启动流程

UI组件节气引擎应用用户UI组件节气引擎应用用户打开应用初始化节气数据加载24节气信息获取当前节气计算当前日期返回当前节气获取下一节气返回下一节气计算倒计时返回天数渲染今日页面展示节气信息

6.2 节气切换流程

关闭

查看美食

查看活动

查看养生

用户浏览节气日历

点击节气卡片

显示节气详情

用户操作

返回日历页面

展示节气美食

展示节气活动

展示养生建议

6.3 页面切换状态

点击节气Tab

点击任务Tab

点击知识Tab

点击今日Tab

点击任务Tab

点击知识Tab

点击今日Tab

点击节气Tab

点击知识Tab

点击今日Tab

点击节气Tab

点击任务Tab

今日页

节气日历页

任务页

知识页


七、节气数据设计

7.1 节气信息完整性

每个节气包含完整的信息:

信息类型内容用途
基本信息名称、拼音、日期节气识别
季节信息所属季节、主题色UI展示
文化信息含义、物候现象知识科普
生活指导美食、活动、养生生活建议
文化传承诗词、作者文化教育

7.2 节气美食设计原则

设计节气美食时应考虑:

节气美食设计

时令性

地域性

养生性

文化性

当季食材

新鲜健康

地方特色

传统习俗

养生功效

营养均衡

文化内涵

历史传承

7.3 养生建议设计原则

设计养生建议时应遵循:

  1. 科学性:基于中医养生理论
  2. 实用性:简单易行,适合日常生活
  3. 季节性:符合节气特点
  4. 个性化:考虑不同人群需求

7.4 节气诗词选择

选择节气诗词时应考虑:

  • 相关性:诗词内容与节气相关
  • 知名度:选择广为人知的经典诗词
  • 教育性:具有文化教育意义
  • 美感:具有艺术美感

八、扩展功能规划

8.1 后续版本规划

2024-01-072024-01-142024-01-212024-01-282024-02-042024-02-112024-02-182024-02-252024-03-032024-03-102024-03-172024-03-24节气数据 节气识别 今日页面 节气日历 任务提醒 节气通知 分享功能 个人定制 AI养生建议 社区分享 V1.0 基础版本V1.1 增强版本V1.2 进阶版本节气生活开发计划

8.2 功能扩展建议

8.2.1 节气提醒

在节气到来前提醒用户:

  • 节气到来提醒
  • 养生建议推送
  • 美食推荐通知
  • 活动安排提醒
8.2.2 个人定制

根据用户情况定制建议:

  • 体质类型识别
  • 个性化养生方案
  • 饮食偏好设置
  • 运动习惯记录
8.2.3 社区分享

建立节气生活社区:

  • 分享节气体验
  • 交流养生心得
  • 美食制作分享
  • 活动组织

九、注意事项

9.1 开发注意事项

  1. 节气日期:节气日期每年略有变化,需要精确计算

  2. 状态管理:使用setState管理本地状态

  3. 性能优化:节气数据较大,注意内存管理

  4. 用户体验:保持界面简洁,避免信息过载

9.2 常见问题

问题原因解决方案
节气识别错误日期计算错误检查节气日期数组
颜色不更新季节未正确识别检查_currentTerm
倒计时不准确日期计算错误检查_calculateDaysToNextTerm
美食图标不显示emoji映射缺失添加新的emoji映射

9.3 使用提示

🌸 节气生活使用小贴士 🌸

顺应节气,调养身心,天人合一。
每个节气都有独特的养生智慧。
品尝当季美食,感受自然馈赠。
参与传统活动,传承文化精髓。

提示:节气养生建议仅供参考,具体情况请咨询专业人士。


十、运行说明

10.1 环境要求

环境版本要求
Flutter SDK>= 3.0.0
Dart SDK>= 2.17.0
鸿蒙OSAPI 21+

10.2 运行命令

# 查看可用设备
flutter devices

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

# 运行到鸿蒙设备
flutter run -d 127.0.0.1:5555 lib/main_solar_terms_life.dart

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

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

十一、总结

节气生活是一款基于中国传统二十四节气的生活指导应用,通过智能识别当前节气,为用户提供个性化的养生建议、饮食推荐和活动安排。应用融合了传统节气文化与现代生活方式,帮助用户在快节奏的现代生活中找到与自然和谐相处的方式。

从技术实现来看,应用使用日期计算算法识别当前节气,通过节气数据模型存储完整的节气信息,采用四季色彩体系设计界面主题,使用卡片式布局展示节气信息。从文化传承来看,应用包含了完整的二十四节气信息,每个节气都有详细的含义、物候现象、美食推荐、活动建议和养生知识,还配有经典诗词,让用户在了解节气的同时感受传统文化的魅力。

应用不仅是一个节气查询工具,更是一个生活指导平台。它提醒我们:顺应节气,调养身心,天人合一;每个节气都有独特的养生智慧;品尝当季美食,感受自然馈赠;参与传统活动,传承文化精髓。在快节奏的现代生活中,节气生活为我们提供了一种回归自然、顺应天时的生活方式。

春雨惊春清谷天,夏满芒夏暑相连
秋处露秋寒霜降,冬雪雪冬小大寒


Logo

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

更多推荐