Skip to content

课堂点名-v1.0.2

Choose a tag to compare

@Fusuccess Fusuccess released this 12 Mar 03:07

课堂点名 v1.0.2 发布说明

发布日期:2026-03-12
版本号:1.0.2 (Build 3)


📋 版本概述

v1.0.2 是 v1.0.1 的维护和功能增强版本,主要聚焦于数据备份功能Web 端兼容性修复编码问题解决


✨ 主要更新

1️⃣ 数据备份功能(核心新增)

导出备份

  • 备份格式:JSON 格式,包含所有数据
  • 备份内容
    • 所有班级信息
    • 所有学生信息
    • 所有点名记录
    • 时间戳和版本信息
  • 跨平台支持
    • Web:直接下载 JSON 文件
    • Android:保存到 Download 文件夹
    • iOS:保存到 Documents 文件夹
  • 文件命名backup_[时间戳].json,便于区分多个备份

导入备份

  • 恢复数据:从备份文件完全恢复所有数据
  • 版本验证:自动检查备份文件版本兼容性
  • 数据覆盖:导入时会覆盖当前所有数据(需确认)
  • 加载提示:导入过程中显示进度提示
  • 成功反馈:导入完成后显示导入统计信息

使用场景

  • 设备更换时数据迁移
  • 定期数据备份防止丢失
  • 多设备间数据同步
  • 数据恢复和回滚

2️⃣ Web 端兼容性修复

中文乱码问题修复

问题:Web 端导入 CSV 文件时中文显示为乱码

原因

  • String.fromCharCodes() 不能正确处理多字节 UTF-8 字符
  • 中文字符需要特殊的 UTF-8 解码处理

解决方案

  • 使用 utf8.decode() 替代 String.fromCharCodes()
  • 正确处理 UTF-8 编码的字节流
  • 在 Web 和移动端统一编码处理逻辑

效果:Web 端现在可以正确显示中文字符

文件选择异常修复

问题:Web 端导入时出现"Cannot hit test a render box that has never been laid out"错误

原因

  • 对话框布局在异步操作后崩溃
  • 缺少固定宽度导致布局计算失败

解决方案

  • 为对话框内容添加固定宽度 SizedBox(width: 500)
  • 改进状态管理和错误处理
  • 添加 mounted 检查防止已卸载组件更新

效果:Web 端导入流程稳定,不再出现布局错误

CSV 列匹配优化

改进

  • 精确匹配"学生姓名"和"学号"列名
  • 避免误匹配"班级名称"等相似列
  • 支持多种列名格式的自动识别

🚀 使用指南

导出备份

  1. 打开应用,进入设置页面
  2. 在"数据管理"部分,点击"导出备份"
  3. 确认导出内容(班级、学生、点名记录数量)
  4. 点击"导出"按钮
  5. 文件自动下载到本地

备份文件位置

  • Web:浏览器默认下载文件夹
  • Android:/storage/emulated/0/Download/
  • iOS:Documents 文件夹

导入备份

  1. 打开应用,进入设置页面
  2. 在"数据管理"部分,点击"导入备份"
  3. 阅读警告信息(导入会覆盖当前数据)
  4. 点击"选择文件"按钮
  5. 选择备份 JSON 文件
  6. 等待导入完成
  7. 查看导入统计信息

注意

  • 导入前建议先导出当前数据作为备份
  • 导入过程中请勿关闭应用
  • 导入完成后会自动刷新数据

🐛 Bug 修复

Bug 原因 修复
Web 端中文乱码 UTF-8 编码处理不当 使用 utf8.decode()
Web 端导入异常 对话框布局崩溃 添加固定宽度和状态检查
CSV 列匹配错误 模糊匹配导致误识别 精确匹配 + 智能回退
导入后白屏 错误处理不完善 改进异常捕获和显示

📞 反馈和支持

如有问题或建议,请通过以下方式联系:


感谢使用课堂点名! 🎉