- Remove flutter_local_notifications dependency from pubspec.yaml - Delete notification_service.dart file - Remove notification service references from app_service.dart and app_binding.dart - Clean up related code and dependencies
237 lines
9.2 KiB
Markdown
237 lines
9.2 KiB
Markdown
# Changelog
|
||
|
||
All notable changes to this project will be documented in this file.
|
||
|
||
## [0.15.0] - 2026-04-08
|
||
|
||
### Added
|
||
- 🏗️ **全局 Binding 系统** - 解决 Controller 重复与生命周期问题
|
||
- 新增 `AppBinding` 统一管理全局 Service 与 Controller 依赖
|
||
- 使用 `Get.lazyPut` + `fenix: true` 确保单例与自动重建
|
||
- 在 `main.dart` 中通过 `initialBinding` 接入
|
||
|
||
- 🚫 **强制页面规范校验中间件** - 不合规页面直接拦截
|
||
- 新增 `PageStandardsMiddleware` 在路由进入前校验 `PageRegistry`
|
||
- 未注册页面或校验失败自动跳转至违规页
|
||
- 新增 `StandardsViolationPage` 展示拦截原因与失败项
|
||
|
||
- 📦 **统一异常模型** - 网络层结构化错误
|
||
- 新增 `ApiException` 与 `ApiExceptionType` 枚举
|
||
- `ApiService` 所有方法统一抛出 `ApiException`
|
||
- 支持超时/无网络/错误响应/取消/未知等类型
|
||
|
||
- 📏 **ScreenUtilConfig 真正初始化** - 响应式适配生效
|
||
- 实现 `ensureScreenSizeAndInit()` 根据屏幕尺寸动态调整设计稿
|
||
- 自动分档:手机(375×812)/平板(768×1024)/桌面(1440×1024)
|
||
- `PageStandards` 中 `scaled` 系列方法已生效
|
||
|
||
- 🧾 **修复定时通知** - scheduleNotification 真正延迟
|
||
- 修改 `NotificationService.scheduleNotification()` 使用 `zonedSchedule`
|
||
- 支持按 `delay` 参数延迟触发,不再立即显示
|
||
|
||
- 🧾 **规范 ProductModel** - 字段语义化
|
||
- 增加 `id` 与 `emoji` 字段,`imageUrl` 改为可选
|
||
- 提供工厂方法 `ProductModel.mock` 用于测试数据
|
||
- 购物车改用 `product.id` 而非 `name` 去重
|
||
|
||
### Changed
|
||
- 🔧 统一页面注册权威来源
|
||
- 移除 `AppPages` 重复定义,仅保留 `AppRoutes.registerAllPages()`
|
||
- 所有页面注册与 `requiredStandards` 统一在 `AppRoutes` 管理
|
||
- 路由中间件与页面注册表保持一致
|
||
|
||
- 🔧 页面改用 `Get.find()` 替代 `Get.put()`
|
||
- `HomePage`、`CartPage`、`ProfilePage` 不再重复创建 Controller
|
||
- 依赖由 `AppBinding` 统一注入,全局状态一致
|
||
|
||
- 🔧 路由校验体系正式接入
|
||
- `main.dart` 中 `initialBinding` 与 `routingCallback` 已生效
|
||
- Debug 模式下自动拦截不合规页面
|
||
|
||
## [0.14.0] - 2026-04-08
|
||
|
||
### Fixed
|
||
- 🔧 **fluttertoast 类型提升错误修复** - 修复编译错误
|
||
- 修复 `packages/fluttertoast/lib/fluttertoast.dart:279` 中的类型提升错误
|
||
- 将公共属性 `context` 赋值给局部变量 `ctx`,解决 Dart 3.2 以下版本的类型提升限制
|
||
- 修复 `packages/fluttertoast/lib/fluttertoast.dart:182-195` 中相同的问题
|
||
- 项目现在可以成功编译
|
||
|
||
### Technical
|
||
- 解决公共字段无法类型提升的问题,使用局部变量作为变通方案
|
||
- 构建成功,生成 app-debug.apk
|
||
|
||
## [0.13.0] - 2026-04-08
|
||
|
||
### Fixed
|
||
- 🔧 **核心错误修复** - 修复多个严重的代码错误
|
||
- 修复 `page_standards.dart` 中 `DeviceType.desktop` 缺失问题,添加 `desktop` 到枚举
|
||
- 修复 `SystemChrome.setSystemUiOverlayStyle` 方法名拼写错误
|
||
- 移除未使用的 `toast_service.dart` 导入
|
||
- 修复 `profile_controller.dart` 中使用 `await` 在非 Future 类型上的问题
|
||
- 修复 `common_utils.dart` 中未使用的 `timer` 变量和 BuildContext 异步使用问题
|
||
- 修复 `adaptive_page_interface.dart` 中未使用的 `primary` 变量
|
||
- 修复 `standard_dialog.dart` 中死代码问题(多余的 ?? 操作符)
|
||
- 移除不必要的 `!` 强制解包操作符
|
||
|
||
### Technical
|
||
- 代码质量提升,所有严重错误已修复,项目可正常编译运行
|
||
- 保持 CHANGELOG.md 只保留最近 5 个版本号的规范
|
||
|
||
## [0.12.0] - 2026-04-08
|
||
|
||
### Fixed
|
||
- 🔧 **繁体中文语言切换修复** - 修复繁体中文选择无效问题
|
||
- 更新 `l10n.yaml` 添加 `zh_Hant` 支持
|
||
- 修复 `app_localizations.dart` 中 `_AppLocalizationsDelegate.isSupported()` 方法,支持 `zh_Hant` 脚本
|
||
- 修复 `ThemeService.setLocale()` 方法,正确处理 `zh_Hant` locale
|
||
- 验证繁体中文翻译文件 `app_zh_Hant.arb` 正确加载
|
||
|
||
- 🔧 **弹窗和 Toast 样式配置验证** - 确认样式配置正常工作
|
||
- 验证 `DialogStyle` 和 `ToastStyleType` 枚举正确定义
|
||
- 确认 `ThemeService` 中的样式配置持久化正常
|
||
- 确认 `ToastService` 和 `StandardDialog` 正确响应样式变化
|
||
|
||
- 🔧 **fluttertoast 空值检查修复** - 修复 `fluttertoast.dart` 中的空值异常
|
||
- 在 `packages/fluttertoast/lib/fluttertoast.dart:277-284` 添加 try-catch 保护
|
||
- 添加 context 空值检查,避免 `Null check operator used on a null value` 异常
|
||
|
||
## [0.11.0] - 2026-04-08
|
||
|
||
### Added
|
||
- 📋 **页面注册系统集成** - 在 main.dart 中添加页面检测和验证
|
||
- 在应用启动时自动注册所有页面到 PageRegistry
|
||
- 调试模式下显示注册状态和配置信息
|
||
- 使用 routingCallback 监听路由变化
|
||
- 路由切换时自动触发页面规范验证
|
||
|
||
- 🎯 **AppRoutes 页面注册功能** - 在 app_routes.dart 中集成 PageRegistry
|
||
- 添加 registerAllPages() 静态方法
|
||
- 为每个页面定义 PageInfo 配置
|
||
- 配置每个页面的 requiredStandards 检查项
|
||
- 包含 Home、Theme、Example、Cart、Profile、Main 等页面
|
||
|
||
- 🎨 **PageStandards 增强** - 添加新增的弹窗和 Toast 样式访问
|
||
- 添加 dialogStyle 访问弹窗样式
|
||
- 添加 toastStyleType 访问 Toast 样式类型
|
||
- 在 PageStandardsMixin 中也添加对应访问方法
|
||
- 更新 PageStandards 导入 page_validator.dart
|
||
|
||
### Changed
|
||
- 🔧 修改 `main.dart` 集成页面注册和验证系统
|
||
- 导入 PageRegistry 和 AppLogger
|
||
- 在 debug 模式下注册所有页面
|
||
- 在 GetCupertinoApp 中添加 routingCallback
|
||
- 路由变化时自动调用 PageValidator.validate()
|
||
|
||
- 🔧 修改 `app_routes.dart` 集成 PageRegistry
|
||
- 导入 page_validator.dart
|
||
- 添加 registerAllPages() 方法
|
||
- 为所有现有页面注册 PageInfo
|
||
- 配置每个页面的标准检查项
|
||
|
||
- 🔧 修改 `page_standards.dart` 新增样式访问
|
||
- 导入 page_validator.dart
|
||
- 添加 dialogStyle 和 toastStyleType 属性
|
||
- 在 PageStandardsMixin 中同步添加
|
||
|
||
## [0.10.0] - 2026-04-08
|
||
|
||
### Added
|
||
- 💬 **弹窗样式选择功能** - 支持 4 种弹窗样式
|
||
- GetX Style:使用 Get.dialog 的自定义弹窗样式
|
||
- Native Style:原生 CupertinoAlertDialog 样式
|
||
- Toast Style:类似 Toast 的彩色背景弹窗样式
|
||
- Hybrid Style:混合样式,原生弹窗 + 动态主题色
|
||
- 所有样式都支持动态主题色和字体大小
|
||
|
||
- 🚀 **Toast 样式选择功能** - 支持 3 种 Toast 样式
|
||
- GetX Snackbar:使用 Get.snackbar 的样式
|
||
- Native Toast:使用 Fluttertoast 的原生样式
|
||
- Custom Style:自定义 FToast 样式
|
||
- 所有样式都支持动态主题色和字体大小
|
||
|
||
- 🎨 **主题设置页面增强** - 在 `theme_demo_page.dart` 新增样式选择 UI
|
||
- Dialog Style 选择器
|
||
- Toast Style 选择器
|
||
- 实时显示当前选中的样式名称
|
||
|
||
### Changed
|
||
- 🔧 修改 `ThemeService` 添加弹窗和 Toast 样式配置
|
||
- `DialogStyle` 枚举定义弹窗样式
|
||
- `ToastStyleType` 枚举定义 Toast 样式
|
||
- 支持持久化存储用户选择
|
||
- 添加 `setDialogStyle` 和 `setToastStyle` 方法
|
||
|
||
- 🔧 修改 `ToastService` 支持多种样式
|
||
- 根据 ThemeService 配置自动选择样式
|
||
- `_showGetxToast` 实现 GetX Snackbar 样式
|
||
- 所有样式都使用动态主题色和字体大小
|
||
|
||
- 🔧 修改 `StandardDialog` 支持多种样式
|
||
- 根据 ThemeService 配置自动选择样式
|
||
- `_showGetxDialog` 实现 GetX 自定义弹窗
|
||
- `_showToastStyleDialog` 实现 Toast 风格弹窗
|
||
- `_showHybridDialog` 实现混合样式弹窗
|
||
- 弹窗背景使用 GetX 默认,字体色使用动态主题色
|
||
|
||
## [0.9.0] - 2026-04-08
|
||
|
||
### Added
|
||
- 🧪 **主题设置页面测试按钮** - 在 `theme_demo_page.dart` 添加测试组件
|
||
- 4 种 Toast 测试按钮(Info、Success、Warning、Error)
|
||
- Standard Dialog 测试按钮
|
||
- 所有测试组件响应动态主题变化
|
||
- 初始化 ToastService
|
||
|
||
### Fixed
|
||
- 🔧 修复深色模式切换时字体色和背景色未自动更新问题
|
||
- 🔧 修复 `theme_service.dart` 中 `Color` 与 `MaterialColor` 类型不匹配问题
|
||
- 🔧 修复 `adaptive_scaffold.dart` 和 `adaptive_page_interface.dart` 响应式变量访问错误
|
||
|
||
---
|
||
|
||
## 开发进度
|
||
|
||
### 已完成功能
|
||
- ✅ 主题服务(ThemeService)
|
||
- ✅ 动画服务(AnimationService)
|
||
- ✅ 国际化支持(en, zh, zh_Hant)
|
||
- ✅ 权限管理服务
|
||
- ✅ 自适应布局系统
|
||
- ✅ GetX 全局状态管理
|
||
- ✅ 标准组件库
|
||
- ✅ 路由守卫系统
|
||
|
||
### 开发中功能
|
||
- 🔄 产品列表页面
|
||
- 🔄 购物车功能
|
||
- 🔄 用户个人中心
|
||
|
||
### 待开发功能
|
||
- 📋 订单管理
|
||
- 📋 支付集成
|
||
- 📋 消息通知
|
||
|
||
---
|
||
|
||
## 技术栈
|
||
|
||
- **框架**: Flutter
|
||
- **状态管理**: GetX
|
||
- **响应式布局**: flutter_adaptive_scaffold
|
||
- **动画系统**: animations
|
||
- **国际化**: flutter_localizations + intl
|
||
- **权限管理**: permission_handler
|
||
|
||
---
|
||
|
||
## 贡献指南
|
||
|
||
1. 遵循 iOS 风格设计规范
|
||
2. 使用主题服务统一管理颜色和字体
|
||
3. 使用动画服务统一管理动画效果
|
||
4. 新增功能需更新 CHANGELOG.md
|
||
5. 代码提交前运行 `flutter analyze` 确保无错误
|
||
6. **新建页面必须支持 GetX 状态管理**
|