- 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
9.2 KiB
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_Hantlocale - 验证繁体中文翻译文件
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
贡献指南
- 遵循 iOS 风格设计规范
- 使用主题服务统一管理颜色和字体
- 使用动画服务统一管理动画效果
- 新增功能需更新 CHANGELOG.md
- 代码提交前运行
flutter analyze确保无错误 - 新建页面必须支持 GetX 状态管理