3.1 KiB
3.1 KiB
🐛 Bug 修复报告
Bug #1: "View Full Report" 按钮无功能
日期: 2025-11-22 发现者: 用户测试 优先级: 中等
问题描述
在 Complete Screen(完成页面)点击 "View Full Report" 按钮时,显示 "History screen coming soon!" 的占位提示,而不是导航到 History 页面。
重现步骤:
- 完成一次 focus session
- 到达 Complete Screen
- 点击 "View Full Report" 按钮
- 看到 SnackBar 提示 "History screen coming soon!"
根本原因
在 complete_screen.dart 中,"View Full Report" 按钮的 onPressed 处理函数只是显示一个占位的 SnackBar,而没有实际导航到 HistoryScreen。
// 问题代码
TextButton(
onPressed: () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(
content: Text('History screen coming soon!'),
duration: Duration(seconds: 1),
),
);
},
child: const Text('View Full Report'),
),
修复方案
- 添加导入: 在文件顶部添加
import 'history_screen.dart'; - 修改按钮行为: 使用
Navigator.pushAndRemoveUntil导航到 HistoryScreen - 更新按钮文本: 将 "View Full Report" 改为更准确的 "View History"
// 修复后的代码
TextButton(
onPressed: () {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const HistoryScreen(),
),
(route) => route.isFirst, // Keep only the home screen in stack
);
},
child: const Text('View History'),
),
修复详情
修改的文件:
lib/screens/complete_screen.dart
修改内容:
- 第 7 行:添加
import 'history_screen.dart'; - 第 110-122 行:重写 TextButton 的 onPressed 处理函数
导航逻辑:
- 使用
pushAndRemoveUntil而不是简单的push - 保留 Home screen 在导航栈底部
- 这样从 History 点击返回会回到 Home,而不是 Complete screen
测试验证
测试步骤:
- 完成一次 focus session
- 在 Complete Screen 点击 "View History" 按钮
- 验证:成功导航到 History Screen
- 验证:可以看到刚刚完成的 session
- 点击返回按钮
- 验证:返回到 Home Screen(不是 Complete Screen)
预期结果: ✅ 所有步骤通过
影响范围
影响的功能:
- Complete Screen 到 History Screen 的导航流程
不影响的功能:
- 其他页面的导航
- 数据保存
- History Screen 自身的显示逻辑
部署方式
Hot Reload: ✅ 支持 需要重启: ❌ 不需要
用户在浏览器中应该会自动看到更新(Flutter 会自动热重载)。如果没有自动更新,按 R 进行热重启。
后续改进建议
可选的 UI 优化:
- 将 "View History" 改为图标按钮(更简洁)
- 添加一个简短的过渡动画
- 在 History Screen 顶部突出显示刚刚完成的 session
状态
- Bug 已识别
- 代码已修复
- 已触发热重载
- 等待用户验证
修复完成!请在浏览器中测试 "View History" 按钮现在是否正常工作。 🎉