# rainweather-flutter **Repository Path**: dddpeter/rainweather-flutter ## Basic Information - **Project Name**: rainweather-flutter - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-05-25 - **Last Updated**: 2025-11-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 雨天气 Flutter 一款现代化的天气预报应用,采用 Flutter 开发,提供流畅的用户体验和精美的界面设计。 > **English Documentation**: [README_EN.md](README_EN.md) | **中文文档**: 本文件 ## ✨ 功能特性 ### 核心功能 - 🌤️ **实时天气数据**:从 weatherol.cn API 获取准确的天气信息 - 📍 **智能定位**:百度定位 + GPS 自动定位和 IP 定位多重保障 - 📊 **多维度预报**:24小时逐时预报 + 15天每日预报 - 📈 **交互式图表**:温度趋势可视化展示 - 🌫️ **空气质量**:实时 AQI 指数和等级显示 - 🏙️ **城市管理**:快速访问和管理多个城市 - 🌅 **日出日落**:精确的日出日落时间和月相信息 - 🌙 **月相显示**:实时月相emoji和月龄信息 - 💡 **生活指数**:穿衣、感冒、运动等生活建议 ### 🎨 主题系统(新功能) - **三种主题模式**:亮色、暗色、跟随系统 - **平滑动画过渡**:300ms 主题切换动画,使用 Curves.easeInOut 曲线 - **主题扩展系统**:基于 Flutter ThemeExtension 的现代化主题架构 - **自动适配**:所有 UI 组件自动适应主题变化 - **颜色插值**:主题切换时所有颜色平滑过渡 ### UI/UX 特性 - 🎯 **Material Design 3**:严格遵循 Google Material Design 3 设计规范 - 📱 **响应式布局**:适配不同屏幕尺寸 - 🔄 **下拉刷新**:流畅的刷新交互体验 - 🎭 **动态背景**:基于主题的渐变背景 - ⚡ **流畅动画**:精心设计的加载和过渡动画 - 🌡️ **温度图表**:直观的温度趋势展示 - 💎 **统一卡片设计**:所有卡片使用一致的 Material Design 样式 - 🌈 **丰富天气图标**:45种天气类型,兼容性更好的emoji图标 - 🎨 **视觉层次清晰**:合理的字体大小和间距设计 ### 技术特性 - 🔥 **状态管理**:Provider 模式实现响应式 UI - 💾 **本地缓存**:SQLite 数据库离线数据存储 - 🔐 **权限管理**:完善的权限请求和处理机制 - 🛡️ **错误处理**:全面的错误处理和友好提示 - 📦 **JSON 序列化**:自动模型序列化/反序列化 - 🎨 **主题扩展**:可扩展的自定义主题系统 ## 🏗️ 项目结构 ``` lib/ ├── constants/ # 应用常量和配置 │ ├── app_colors.dart # 颜色常量(兼容层) │ ├── theme_extensions.dart # 主题扩展定义 │ └── app_constants.dart # 应用常量 ├── models/ # 数据模型 │ ├── weather_model.dart # 天气数据模型 │ └── location_model.dart # 位置数据模型 ├── providers/ # 状态管理 │ ├── weather_provider.dart # 天气数据状态 │ └── theme_provider.dart # 主题状态管理 ├── screens/ # 主要页面 │ ├── today_screen.dart # 今日天气页面 │ ├── hourly_screen.dart # 24小时预报页面 │ ├── forecast15d_screen.dart # 15日预报页面 │ ├── city_weather_screen.dart # 城市天气页面 │ └── main_cities_screen.dart # 主要城市页面 ├── services/ # 业务逻辑和 API │ ├── weather_service.dart # 天气 API 服务 │ ├── location_service.dart # 定位服务(原生GPS) │ ├── baidu_location_service.dart # 百度定位服务 │ ├── database_service.dart # 数据库服务 │ └── city_service.dart # 城市数据服务 └── widgets/ # 可重用组件 ├── weather_chart.dart # 7日温度图表 ├── hourly_chart.dart # 24小时温度图表 ├── forecast15d_chart.dart # 15日温度图表 ├── hourly_weather_widget.dart # 24小时预报卡片 ├── life_index_widget.dart # 生活指数组件 └── sun_moon_widget.dart # 日出日落月相组件 ``` ## 📦 核心依赖 ### 状态管理 - **provider** ^6.1.2 - 状态管理解决方案 ### 网络请求 - **dio** ^5.7.0 - HTTP 客户端 - **http** ^1.2.2 - HTTP 请求 ### 定位服务 - **flutter_bmflocation** ^3.7.0 - 百度定位服务(高精度定位) - **geolocator** ^14.0.2 - GPS 定位 - **permission_handler** ^12.0.1 - 权限管理 ### 本地存储 - **sqflite** ^2.3.3+1 - 本地数据库 - **shared_preferences** ^2.3.2 - 键值存储 ### UI 组件 - **fl_chart** ^0.69.2 - 图表组件 - **cached_network_image** ^3.4.1 - 图片缓存 - **lottie** ^3.1.2 - 动画支持 ### 开发工具 - **json_serializable** ^6.9.1 - JSON 序列化 - **build_runner** ^2.4.13 - 代码生成 ## 🚀 快速开始 ### 环境要求 - Flutter SDK 3.9.2 或更高版本 - Dart SDK 3.9.2 或更高版本 - Android Studio / VS Code - Android 设备或模拟器(iOS 也支持) ### 安装步骤 1. **克隆仓库** ```bash git clone cd rainweather_flutter ``` 2. **安装依赖** ```bash flutter pub get ``` 3. **生成代码**(如需要) ```bash flutter pub run build_runner build --delete-conflicting-outputs ``` 4. **运行应用** ```bash flutter run ``` ### 构建发布版本 ```bash # Android APK flutter build apk --release # Android App Bundle flutter build appbundle --release # iOS flutter build ios --release ``` ## 🎨 主题系统使用 ### 三种使用方式 **方式 1:推荐 - 使用扩展方法** ```dart Text( '示例文本', style: TextStyle( color: context.appTheme.textPrimary, fontSize: 16, ), ) ``` **方式 2:静态方法** ```dart Text( '示例文本', style: TextStyle( color: AppColors.of(context).textPrimary, fontSize: 16, ), ) ``` **方式 3:兼容方式(旧代码)** ```dart Consumer( builder: (context, themeProvider, child) { AppColors.setThemeProvider(themeProvider); return Text( '示例文本', style: TextStyle(color: AppColors.textPrimary), ); }, ) ``` 详细使用指南请查看 [THEME_USAGE.md](THEME_USAGE.md) ## 📱 主要页面 ### 今日天气 - ✅ 当前天气详细信息展示 - ✅ 温度、湿度、风力、气压等数据 - ✅ 空气质量指数(AQI) - ✅ 日出日落时间和月相 - ✅ 生活指数建议 - ✅ 24小时天气预览 - ✅ 7日温度趋势图表 - ✅ 底部刷新按钮 ### 24小时预报 - ✅ 逐小时天气变化 - ✅ 温度趋势交互式图表 - ✅ 天气图标和描述 - ✅ 风力风向详细信息 - ✅ 温度单位显示(℃) ### 15日预报 - ✅ 15天详细天气预报 - ✅ 最高/最低温度趋势图 - ✅ 上午/下午天气对比 - ✅ 日出日落时间 - ✅ 天气描述 ### 主要城市 - ✅ 中国主要城市天气快速查看 - ✅ 城市天气卡片展示 - ✅ 点击查看城市详细天气 - ✅ 支持多个城市管理 ### 城市天气详情 - ✅ 单个城市完整天气信息 - ✅ 返回按钮导航 - ✅ 与今日天气相同的详细信息 - ✅ 下拉刷新支持 ## 🔧 最近更新 ### v1.13.3 (2025-01-21) **黄历功能优化** - 🎯 **滑动页面设计**:黄历详情页面改为滑动页面,支持左右滑动切换 - 🤖 **AI解读页面**:新增独立的AI解读页面,提供智能黄历解读 - 📱 **页面指示器**:优化页面切换体验,支持点击和滑动切换 - 🎨 **UI优化**:优化黄历节日页面,移除重复的今日黄历解读卡片 **通勤提醒优化** - 🔄 **自动清理逻辑**:修复通勤提醒时段结束后不自动消失的问题 - ⏰ **时段判断优化**:使用用户设置的通勤时段进行判断,不再使用硬编码时间 - 🧹 **清理机制完善**:优化清理逻辑,确保已结束的建议及时清理 - 📊 **过滤优化**:不在通勤时段时,只显示未结束的建议 **UI细节优化** - 📐 **日出日落卡片**:优化布局,使卡片更加紧凑 - 🎨 **页面指示器**:修复亮色模式下按钮颜色显示问题,与AppBar图标颜色一致 - 🎯 **黄历详情入口**:优化按钮颜色,提高可见度 **问题修复** - 🐛 **通勤提醒清理**:修复通勤提醒在时段结束后不消失的问题 - 🐛 **颜色显示**:修复页面指示器和按钮在亮色模式下的颜色问题 - 🐛 **布局优化**:修复日出日落卡片布局过于宽松的问题 ### v1.13.2 (2025-11-19) **城市天气页面重新设计** - 🎯 **滑动页面设计**:将原来的TabBarView改为PageView,支持左右滑动切换 - 📱 **三个独立页面**:当前天气、24小时预报、15日预报,每个页面可独立滚动 - 🎨 **自定义页面指示器**:支持点击切换和动画效果,优化用户体验 - 📊 **内容重新组织**:将原来分散在不同标签页的内容整合到独立页面中 **分享功能升级** - 🖼️ **天气海报生成**:分享功能改为生成精美的天气海报 - 📱 **预览和保存**:用户可以预览海报并保存到相册 - 🎨 **丰富信息展示**:海报包含当前天气、温度、空气质量、生活指数等详细信息 - 🔧 **错误处理优化**:添加完善的错误处理和用户友好提示 **用户体验优化** - 📐 **布局改进**:优化页面布局和视觉效果,提升用户体验 - 🔄 **交互优化**:改进滑动交互和页面切换,操作更流畅 - 🐛 **问题修复**:修复已知问题并提升应用稳定性 ### v1.13.1 (2025-01-20) **稳定性优化** - 🛡️ **AI组件错误处理增强**:修复无缓存时可能出现的红屏问题 - 🔄 **Widget状态管理优化**:避免在build过程中触发状态更新,解决InheritedElement断言失败 - 🎯 **Provider空安全强化**:所有Provider访问添加空安全检查和默认值兜底 - ⚡ **AI生成触发优化**:使用Selector精确监听状态变化,防止重复触发 **缓存策略优化** - 💾 **AI缓存时长调整**:AI请求缓存从1小时降为5分钟,减少重复生成 - 🚀 **启动体验优化**:总是先显示缓存数据,后台静默刷新最新内容 - 📦 **数据库缓存更新**:AI摘要和15日预报缓存有效期统一为5分钟 - 🎨 **智能缓存判断**:根据缓存新鲜度自动选择显示策略 **错误处理完善** - 🛠️ **异常兜底机制**:所有关键组件添加try-catch保护 - 📝 **友好错误提示**:异常情况显示用户友好的默认文案 - 🔍 **详细错误日志**:完善日志输出便于问题排查 - 💪 **健壮性提升**:即使网络异常或缓存失效也不会崩溃 ### v1.13.0 (2025-01-19) **品牌升级** - ✨ **应用名称更新**:从"知雨天气2"升级为"智雨天气" - 🎨 **全面提升品牌形象**:更简洁、更易记的应用名称 - 📱 **全平台更新**:Android、iOS、Web、Windows、Linux 统一名称 - 🎯 **用户体验优化**:更清晰的品牌识别度 ### v1.12.6 (2025-01-18) **AI智能内容优化** - ✨ **AI内容打字机效果**:所有AI生成的内容支持逐行打字机效果展示,营造更好的用户体验 - 💾 **缓存优化**:缓存内容直接显示,不使用打字机效果,快速响应 - 📝 **提示词优化**:通勤建议、健康管家、异常预警等AI提示词专业化和实用化 - 🌙 **黄历解读**:新增黄历节日和黄历详情的AI解读功能,传承传统文化 **黄历功能增强** - 🗓️ **黄历详情页面重构**:重新设计黄历详情页面,布局更紧凑美观 - 🎨 **吉神方位**:改为2x2竖向卡片布局,直观展示财神、喜神、福神、冲煞方位 - ⭐ **星座星宿**:同一行展示,星宿吉凶显示为"虚(凶)"格式,颜色区分 - 📖 **AI解读**:彭祖禁忌和宜忌提醒增加AI智能解读,10天缓存机制 - 📅 **日历优化**:减小字体和间距,黄道吉日使用橙色背景和边框标记 **页面布局优化** - 📱 **24小时天气卡片**:小卡片间距从8px减少到2px,宽度从72减少到58,更紧凑 - 🎨 **生活指数**:移除AI解读入口,恢复简洁设计 - 🔧 **代码重构**:优化main.dart结构,提取AppInitializationService、AppRouteObserver、MainAppBar - 🎯 **统一规范**:所有AI卡片使用统一的Material Design 3样式 **问题修复** - 🐛 **文字装饰修复**:修复全局主题导致的文本自动下划线问题 - 🎨 **主题配置**:在主题中明确设置所有TextTheme的decoration为none - 📝 **文本显示**:所有文本组件不再出现意外的下划线装饰 ### v1.12.3 (2025-01-14) **AI智能助手全面优化** - ✨ **启动优化**:AI摘要优先从缓存加载,避免"正在生成"闪烁 - 🚗 **通勤提醒优化**:非通勤时段也显示今日历史建议,支持回顾 - 📱 **卡片交互优化**:通勤提醒显示4行内容(标题1行+内容3行),点击跳转综合提醒页面 - 🏝️ **浮动岛优化**:静止时透明度提升到60%,老人更易看到(原15%) - 🌓 **主题快捷切换**:今日天气左上角添加亮色/暗色主题切换图标 - 🎯 **交互简化**:移除通勤提醒多层展开逻辑,一步直达详情页 ### v1.12.1 (2025-01-12) **温度趋势图表全面优化** - 📊 **7日温度趋势图**:数据点添加天气图标和温度值,直观展示每天天气 - 📈 **24小时温度趋势图**:添加天气图标和温度值,支持横向滑动查看完整数据 - 📉 **15日温度趋势图**:添加天气图标和温度值,支持横向滑动和垂直网格线 - 🎨 **视觉优化**:隐藏X/Y轴线条,添加垂直网格线,数据点值带描边效果 - 🌤️ **智能图标**:根据时间自动显示白天/夜间天气图标 - 📱 **布局优化**:增加图表高度,调整顶部空间,确保图标完整显示 - 🎯 **交互优化**:24小时和15日图表支持左右滑动,流畅查看更多数据 ### v1.12.0 (2025-01-11) **AI智能助手独立卡片设计** - 🎨 AI智能助手从头部卡片中独立出来,成为独立卡片 - 🌌 深紫到深蓝渐变背景,科技感十足 - ✨ 金色琥珀色图标和文字,在深色背景下更醒目 - 📱 参照城市天气头部间距设计,布局更协调 **头部背景图片效果** - 🌌 今日天气和城市天气头部添加露营场景背景图片 - 🎨 背景图片透明度控制,不影响文字可读性 - 🏕️ 营造自然、温馨的户外氛围 - 📱 固定深蓝色背景 + 微妙纹理效果 **天气图标系统全面升级** - 🎯 全面替换emoji图标为中文PNG图标 - 🌙 支持日夜模式,夜间图标自动切换 - 📱 71种天气类型完整覆盖 - 🔧 图标加载失败自动降级处理 **空气质量卡片组件化** - 📱 提取为独立可重用组件 `AirQualityCard` - 🎨 统一的卡片样式和间距设计 - 🔄 支持今日天气和城市天气页面复用 - 📐 遵循Material Design 3规范 **卡片样式统一优化** - 🎨 所有卡片遵循统一的Material Design 3设计规范 - 📐 圆角、间距、阴影、透明度统一标准 - 🌈 渐变背景和阴影效果增强视觉层次 - 🎯 配色约束明确,避免对比度问题 **视觉效果增强** - 🌈 多层渐变背景效果 - ✨ 智能透明度层次设计 - 🎨 金色光晕和阴影效果 - 📱 响应式布局适配 ### v1.11.0 (2025-10-10) **Material Design 3 规范完善** - 🎨 完善 MD3 卡片设计规范,统一所有卡片样式 - 📐 内部小卡片透明度统一(亮色 0.15/0.2,暗色 0.25/0.3) - 🚫 配色约束:内部小卡片禁用蓝色系(深色背景对比度不足) - 🎯 圆角统一为 4px(内部小卡片)和 8px(外层大卡片) - 🔲 移除内部小卡片边框,依靠透明度区分层次 **AI 功能优化** - 🤖 AI智能助手配色优化(蓝色→琥珀金色 #FFB300) - ✨ AI标签智能显示(只在AI生成的建议上显示) - 🧠 通勤建议标题动态生成(根据天气情况自动生成) - 🎯 AI标签位置优化(从卡片标题移到小卡片内容) **通勤提醒系统** - 🚗 通勤提醒组件主题切换实时响应 - 🎨 通勤提醒与天气提醒设计完全统一 - 📊 收起/展开交互优化(收起显示第一条概要) - 🔄 展开图标语义化(收起朝右→,展开朝下↓) - 🟢 "提示"级别颜色改为绿色(避免蓝色对比度问题) **卡片布局优化** - 📋 今日提醒卡片位置前移(在24小时天气/详细信息前) - 🏷️ 数量标签始终显示(包括"1条") - 🎯 穿衣建议和下午时段改用绿色(避免蓝色) **交互体验提升** - 👆 天气提醒小卡片可点击跳转详情页 - 👆 通勤提醒收起时点击小卡片展开 - 🎯 标题栏点击交互更清晰 - 📱 移除展开/收起图标(天气提醒),改用"更多"文字 **规则文档完善** - 📖 新增完整的 MD3 设计规范章节 - 📐 详细的卡片样式规范(含代码示例) - 🎨 配色使用原则和约束说明 - 📋 适用组件清单(13个组件) ### v1.10.0 (2025-10) **UI/UX优化** - 🎨 底部导航栏Material Design 3风格优化 - 📐 卡片圆角统一为8dp标准(与Material Design 3一致) - 🌙 暗色模式底部导航选中状态增强(透明度24%) - 📱 小组件自适应大小屏幕布局优化 **功能改进** - 🔄 主要城市页面刷新不重新定位,节省电量 - 📍 点击定位图标才触发重新定位 - 💧 降雨提醒逻辑优化,数据更准确 - 🔧 修复无限刷新问题 - 📏 小组件文字单行显示,不折行 ### v1.9.0 (2025-10) **桌面小组件** - 🏠 新增Android桌面天气小组件功能 - 🖼️ 支持真实天气图标(25种天气类型) - 🎨 自适应暗色/亮色主题,毛玻璃背景效果 - 📅 显示未来5天天气预报(明天到第6天) - 🔄 后台5分钟自动刷新天气数据 - 📱 优化小屏幕显示效果,自适应布局 **功能优化** - 🔧 修复添加城市按钮需点击两次的问题 - 🔄 首次进入主要城市界面自动刷新天气 - 📐 小组件自适应大小屏幕,无留白 - 🌡️ 温度统一使用摄氏度(℃)符号 ### v1.6.0 (2025-01) **天气预警系统** - 🚨 新增天气预警功能,支持暴雨、台风、高温等多种预警类型 - 🚨 预警信息实时推送,及时提醒用户注意天气变化 - 🚨 预警设置页面,用户可自定义预警类型和提醒方式 - 🚨 预警历史记录,查看过往预警信息 **页面激活监听** - 📱 新增页面激活监听服务,优化应用性能 - 📱 智能管理页面生命周期,减少不必要的网络请求 - 📱 提升应用响应速度和电池续航能力 **UI/UX 优化** - 🎨 优化天气预警卡片设计,提升信息可读性 - 🎨 改进预警图标和颜色方案,增强视觉识别度 - 🎨 统一预警页面的设计风格,保持应用整体一致性 ### v1.5.0 (2025-01) **百度定位集成** - 🎯 集成百度定位SDK,提供更高精度的定位服务 - 🎯 支持iOS和Android双平台百度定位 - 🎯 百度定位与原有定位服务无缝集成,自动降级 - 🎯 提供完整的定位权限管理和隐私政策同意流程 **启动流程优化** - ⚡ 移除自定义SplashScreen,使用原生启动画面 - ⚡ 应用启动直接进入主界面,减少等待时间 - ⚡ 优化初始化流程,提升启动速度 - ⚡ 更流畅的用户体验 **定位服务增强** - 📍 百度定位提供更准确的位置信息 - 📍 支持高精度定位模式(GPS + 网络定位) - 📍 智能错误处理和降级方案 - 📍 详细的定位日志和调试信息 ### v1.4.0 (2025-01) **小卡片图标颜色重新设计** - 🎨 生活指数卡片图标使用多样化颜色方案,提升视觉层次 - 🎨 详细信息卡片图标采用语义化颜色设计 - 🎨 暗色主题下图标背景透明度优化,增强可读性 - 🎨 所有小卡片样式与今日提醒保持一致 **卡片间距优化** - 📏 大卡片间距调整为Material Design 3推荐的最小值(12dp) - 📏 创建公共卡片间距样式,统一管理所有页面 - 📏 提供更紧凑、现代的视觉效果 - 📏 提升信息密度和用户体验 **主题适配优化** - 🌓 暗色主题下小卡片背景透明度进一步降低 - 🌓 确保在深色背景下有更好的对比度和可读性 - 🌓 所有卡片组件主题适配更加完善 ### v1.3.0 (2025-01) **头部设计优化** - 🎨 统一今日天气和城市天气头部背景为深蓝色系 - 🎨 亮色和暗色模式都使用深色头部背景,确保视觉一致性 - 🎨 头部文字和图标使用白色,在深色背景下更清晰可见 - 🎨 头部区域添加渐变效果和阴影,增强层次感 **天气动画优化** - 🌈 亮色模式天气动画配色统一使用暗色模式配色 - 🌈 修复大雨、暴雨、大暴雨、特大暴雨的小云朵颜色过深问题 - 🌈 雾和霾天气动画使用近似白色的灰色,更接近真实效果 - 🌈 所有天气动画在深色头部背景下有更好的视觉效果 **测试页面优化** - 🧪 天气动画测试页面卡片使用深蓝色背景 - 🧪 测试页面卡片文字使用白色,与头部样式保持一致 - 🧪 提升测试页面的视觉一致性和用户体验 **技术改进** - ⚡ 优化头部区域的颜色管理系统 - 🔧 添加头部专用的文字和图标颜色配置 - 🛡️ 改进天气动画在不同主题下的显示效果 - 📦 统一头部区域的设计语言 ### v1.2.0 (2025-01) **主题系统重构** - ✨ 新增三种主题模式(亮色/暗色/跟随系统) - ✨ 实现主题切换平滑动画(300ms) - ✨ 引入 ThemeExtension 现代化主题架构 - ✨ 所有 UI 组件支持主题自动适配 **UI/UX 优化** - 🎨 优化 24小时预报区域间距(减少至 1/3) - 🎨 24小时预报添加天气描述文字 - 🎨 移除 24小时页面刷新按钮 - 🎨 移除城市天气页面的生活建议和刷新按钮 - 🎨 今日天气刷新按钮移至右下角 **数据展示优化** - 📊 所有图表 Y 轴温度单位改为 ℃ - 📊 图表点描边颜色适配主题 - 📊 生活指数卡片文字颜色适配主题 **技术改进** - ⚡ 优化主题切换性能 - 🔧 添加主题使用文档(THEME_USAGE.md) - 🛡️ 改进错误处理和边界情况 - 📦 代码结构优化和清理 ## 📡 API 集成 ### 天气 API - **基础 URL**: `https://www.weatherol.cn/api/home/` - **主要端点**: `/getCurrAnd15dAnd24h?cityid={cityId}` - **数据格式**: JSON ### 响应数据结构 ```json { "current": { "current": {}, // 当前天气 "tips": "" // 天气提示 }, "forecast24h": [], // 24小时预报 "forecast15d": [], // 15日预报 "sunMoonData": {}, // 日出日落月相 "lifeIndex": [] // 生活指数 } ``` ## 🔐 权限说明 ### Android 权限 ```xml ``` ### iOS 权限 在 `Info.plist` 中配置: - NSLocationWhenInUseUsageDescription - NSLocationAlwaysUsageDescription ## 🧪 开发指南 ### 代码生成 ```bash # 生成 JSON 序列化代码 flutter pub run build_runner build --delete-conflicting-outputs # 监听文件变化自动生成 flutter pub run build_runner watch ``` ### 代码分析 ```bash # 分析所有代码 flutter analyze # 分析特定文件 flutter analyze lib/screens/today_screen.dart ``` ### 测试 ```bash # 运行所有测试 flutter test # 运行特定测试 flutter test test/widget_test.dart ``` ## 🏗️ 架构设计 ### 状态管理 ``` WeatherProvider (顶层) ├── currentWeather: WeatherModel? ├── currentLocation: LocationModel? ├── isLoading: bool └── error: String? ThemeProvider (顶层) ├── themeMode: AppThemeMode └── notifyListeners() ``` ### 数据流 ``` 定位服务 → WeatherProvider → 天气服务 → API ↓ 数据库缓存 ← ← ← ← ← ← ← ↓ UI 更新 ``` ## 🤝 贡献指南 欢迎贡献代码!请遵循以下步骤: 1. Fork 本仓库 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request ### 代码规范 - 遵循 Dart 官方代码风格 - 使用有意义的变量和函数名 - 添加必要的注释 - 保持代码整洁和可读性 ## 📝 更新日志 ### v1.13.3 (最新 - 2025-01-21) **黄历功能优化** - 🎯 **滑动页面设计**:黄历详情页面改为滑动页面,支持左右滑动切换 - 🤖 **AI解读页面**:新增独立的AI解读页面,提供智能黄历解读 - 📱 **页面指示器**:优化页面切换体验,支持点击和滑动切换 - 🎨 **UI优化**:优化黄历节日页面,移除重复的今日黄历解读卡片 **通勤提醒优化** - 🔄 **自动清理逻辑**:修复通勤提醒时段结束后不自动消失的问题 - ⏰ **时段判断优化**:使用用户设置的通勤时段进行判断,不再使用硬编码时间 - 🧹 **清理机制完善**:优化清理逻辑,确保已结束的建议及时清理 - 📊 **过滤优化**:不在通勤时段时,只显示未结束的建议 **UI细节优化** - 📐 **日出日落卡片**:优化布局,使卡片更加紧凑 - 🎨 **页面指示器**:修复亮色模式下按钮颜色显示问题,与AppBar图标颜色一致 - 🎯 **黄历详情入口**:优化按钮颜色,提高可见度 **问题修复** - 🐛 **通勤提醒清理**:修复通勤提醒在时段结束后不消失的问题 - 🐛 **颜色显示**:修复页面指示器和按钮在亮色模式下的颜色问题 - 🐛 **布局优化**:修复日出日落卡片布局过于宽松的问题 ### v1.13.2 (2025-11-19) **城市天气页面重新设计** - 🎯 **滑动页面设计**:将原来的TabBarView改为PageView,支持左右滑动切换 - 📱 **三个独立页面**:当前天气、24小时预报、15日预报,每个页面可独立滚动 - 🎨 **自定义页面指示器**:支持点击切换和动画效果,优化用户体验 - 📊 **内容重新组织**:将原来分散在不同标签页的内容整合到独立页面中 **分享功能升级** - 🖼️ **天气海报生成**:分享功能改为生成精美的天气海报 - 📱 **预览和保存**:用户可以预览海报并保存到相册 - 🎨 **丰富信息展示**:海报包含当前天气、温度、空气质量、生活指数等详细信息 - 🔧 **错误处理优化**:添加完善的错误处理和用户友好提示 **用户体验优化** - 📐 **布局改进**:优化页面布局和视觉效果,提升用户体验 - 🔄 **交互优化**:改进滑动交互和页面切换,操作更流畅 - 🐛 **问题修复**:修复已知问题并提升应用稳定性 ### v1.13.0 (2025-01-19) **品牌升级** - ✨ **应用名称更新**:从"知雨天气2"升级为"智雨天气" - 🎨 **全面提升品牌形象**:更简洁、更易记的应用名称 - 📱 **全平台更新**:Android、iOS、Web、Windows、Linux 统一名称 - 🎯 **用户体验优化**:更清晰的品牌识别度 ### v1.12.6 (2025-01-18) - ✨ **AI智能助手优化**:启动时优先加载缓存,通勤提醒支持历史回顾 - 🏝️ **浮动岛优化**:透明度提升60%,老人更易看到 - 🌓 **主题快捷切换**:今日天气左上角添加主题切换图标 - 🎯 **交互优化**:通勤提醒点击直达详情,一步到位 ### v1.12.0 - 🎨 **AI智能助手独立卡片**:全新独立卡片设计,深紫渐变背景 - 🌌 **头部背景图片**:今日天气和城市天气头部添加露营场景背景 - 🎯 **天气图标系统升级**:全面使用中文PNG图标,支持日夜模式 - 📱 **空气质量卡片组件化**:提取为独立可重用组件 - 🎨 **卡片样式统一**:遵循Material Design 3规范,统一间距和样式 - 🌈 **视觉效果增强**:渐变背景、阴影效果、透明度层次优化 ### v1.10.0 - 🎨 **UI优化**:底部导航Material Design 3风格,卡片圆角统一8dp - 🔄 **刷新优化**:主要城市页面刷新不定位,节省电量 - 💧 **数据准确**:降雨提醒逻辑优化,小组件数据实时同步 - 🔧 **问题修复**:修复无限刷新,文字折行等问题 ### v1.9.0 - 🏠 **桌面小组件**:新增Android桌面天气小组件,支持真实天气图标 - 🎨 **主题适配**:小组件自适应暗色/亮色主题,毛玻璃背景效果 - 📅 **预报优化**:显示未来5天天气,后台自动刷新 - 🔧 **体验优化**:修复添加城市响应问题,优化小屏幕显示 ### v1.6.0 - 🚨 **天气预警系统**:新增天气预警功能,支持多种预警类型 - 📱 **页面激活监听**:优化应用性能,智能管理页面生命周期 - 🎨 **UI/UX 优化**:改进预警卡片设计,提升用户体验 - 🔧 **代码优化**:增强应用稳定性和响应速度 ### v1.5.0 - 🎯 **百度定位集成**:集成百度定位SDK,提供高精度定位服务 - ⚡ **启动流程优化**:移除自定义启动画面,提升启动速度 - 📍 **定位服务增强**:支持高精度定位模式和智能降级 ### v1.4.0 - 🎨 **小卡片图标重新设计**:多样化颜色方案,提升视觉层次 - 📏 **卡片间距优化**:Material Design 3推荐间距,更紧凑现代 - 🌓 **主题适配优化**:暗色主题下更好的对比度和可读性 ### v1.3.0 - 🎨 **头部设计优化**:统一深蓝色系头部背景 - 🌈 **天气动画优化**:修复大雨等天气动画颜色问题 - 🧪 **测试页面优化**:提升测试页面视觉一致性 ### v1.2.0 - ✨ **Material Design 3 优化**:全面升级到 Material Design 3 设计规范 - 🌅 **日出日落卡片**:新增日出日落和月出月落信息显示 - 🌙 **月相功能**:实时月相emoji显示和月龄信息 - 💡 **生活指数**:穿衣、感冒、运动等生活建议指数 - 🎨 **UI 优化**:统一卡片样式,优化字体大小和间距 - 🌈 **天气图标**:扩展至45种天气类型,提升兼容性 - 🔧 **代码优化**:修复主题适配问题,提升代码质量 ### v1.1.0 - 🎨 **主题系统**:完整的亮色/暗色主题支持 - 📱 **响应式设计**:优化移动端体验 - 🔄 **状态管理**:使用 Provider 模式重构 ### v1.0.0 - 🚀 **初始版本**:基础天气功能实现 ## 📄 许可证 本项目采用 MIT 许可证 - 详见 [LICENSE](LICENSE) 文件 ## 🙏 致谢 - [weatherol.cn](https://www.weatherol.cn) - 提供天气数据 API - [Flutter](https://flutter.dev) - 优秀的跨平台框架 - [Provider](https://pub.dev/packages/provider) - 状态管理解决方案 - [FL Chart](https://pub.dev/packages/fl_chart) - 图表组件库 - 所有开源贡献者 ## 📞 联系方式 如有问题或建议,欢迎: - 提交 Issue - 发起 Discussion - 提交 Pull Request --- **Made with ❤️ using Flutter**