# 日历功能新增 Bug 记录 **Created**: 2026-03-02 **Feature**: 日历事件创建功能 **Status**: Partial (Bug 5, 7 pending) --- ## Bug 1: 日视图时间范围不完整 **Severity**: High **Status**: Fixed **修复内容**: - 修改循环范围从 `for (var hour = 7; hour <= 22; hour++)` 改为 `for (var hour = 0; hour <= 23; hour++)` - 现在日视图显示完整的 00:00-24:00 时间线 --- ## Bug 2: 日历事件保存后视图不刷新 **Severity**: High **Status**: Fixed **修复内容**: - 为 `CreateEventSheet` 添加 `onSaved` 回调参数 - 在月视图和日视图中使用 `setState` + `UniqueKey` 强制刷新事件列表 - 保存后自动刷新,无需手动切换页面 --- ## Bug 3: 日视图事件高度未按时间范围渲染 **Severity**: Medium **Status**: Fixed **修复内容**: - 使用 `Positioned` + `Stack` 替代原来的 `Wrap` 布局 - 根据事件实际持续时间计算高度:`持续分钟数 / 60 * _hourHeight` - 事件垂直位置根据开始时间计算:`开始分钟数 / 60 * _hourHeight` --- ## Bug 4: 月视图事件超过3个后无法显示 **Severity**: Medium **Status**: Fixed **修复内容**: - 显示前 2 个事件 - 超过 2 个时显示 `+N` 按钮 - 点击 `+N` 跳转到日视图 --- ## Bug 5: 日视图点击事件跳转到错误页面 **Severity**: High **Status**: Pending **现象描述**: - 在日视图中点击日历事件 - 跳转到的页面不是日历详情页,而是显示了类似首页的聊天输入框 - 页面显示"输入消息..."和麦克风图标 - 路由应该是 `/calendar/events/evt_xxx` 但显示的是首页布局 **已尝试的修复**: - 将 `/calendar/events/:id` 路由移到最前面优先匹配 - 调试日志显示 eventId 正确传递 - 添加了 `clipBehavior: Clip.none` 和 `Material + InkWell` **可能原因**: - 路由配置问题,可能被其他路由或 Shell 组件影响 - 页面布局问题导致显示异常 **修复建议**: - 检查路由配置,确认 CalendarEventDetailScreen 正确加载 - 检查页面布局是否正确渲染 --- ## Bug 6: 日视图多事件重叠时布局错乱 **Severity**: Medium **Status**: Fixed **修复内容**: - 使用 `_calculateEventColumns` 方法计算事件列位置 - 最早开始的事件放在最左边 - 其余事件依次向右排列,每个事件宽度 = 总宽度 / 列数 - 使用 `Positioned` 绝对定位控制事件位置 --- ## Bug 7: 日历详情页布局错误 **Severity**: High **Status**: Pending **现象描述**: - 点击跳转到的页面显示异常 - 页面顶部显示聊天输入框("输入消息..."和麦克风图标) - 应该是日历详情页但显示了类似首页的布局 - 渲染错误:RenderFlex children have non-zero flex but incoming width constraints are unbounded **已尝试的修复**: - 给 `_buildInputContainer` 中的 Container 添加 `width: double.infinity` - 修改内部的 Row 使用 const **修复建议**: - 需要重新设计详情页布局 - 确认底部输入框组件是否需要(可能复制自其他页面) --- ## 相关文件清单 ### 新增文件 - `apps/lib/features/calendar/data/models/schedule_item_model.dart` - 日历事件数据模型 - `apps/lib/features/calendar/data/services/mock_calendar_service.dart` - Mock 服务 - `apps/lib/features/calendar/ui/widgets/create_event_sheet.dart` - 创建事件底部弹窗 ### 修改文件 - `apps/lib/features/calendar/ui/screens/calendar_month_screen.dart` - 月视图 - `apps/lib/features/calendar/ui/screens/calendar_dayweek_screen.dart` - 日视图 - `apps/lib/features/calendar/ui/screens/calendar_event_detail_screen.dart` - 事件详情页 - `apps/lib/core/router/app_router.dart` - 路由配置