# 某人的题库 - 客户端 高中数学题库管理系统 Flutter 客户端(Android)。 ## 构建 ```bash flutter pub get # 调试版 flutter build apk --debug # 发布版(需签名文件) cp key.jks android/app/key.jks cp keystore.properties android/app/keystore.properties flutter build apk --release # 输出:build/app/outputs/flutter-apk/app-release.apk ``` ## 首次使用 1. 打开应用 → 设置页 2. 输入服务器地址和 Token → 连接 3. 跳转题库首页 | 环境 | 服务器地址 | |------|-----------| | 模拟器 | `http://10.0.2.2:8765` | | 真机 | `http://服务器IP:8765` | ## 页面导航 | 标签 | 功能 | |------|------| | **题库** | 知识点筛选(🔍按钮)→ 题型筛选 → 题目列表(显示正文摘要)→ 点开预览(公式+图片)→ +/- 管理试题篮 | | **搜索** | 关键词全文搜索 | | **试题篮** | 查看/移除题目,导出 docx | | **设置** | 服务器配置、WebDAV 远程备份配置 | ## 知识点筛选 1. 右上角 🔍 按钮 → 弹出知识点树 2. 展开章节浏览,点击 🔍 图标筛选该节点 3. 点击叶子节点精确筛选 4. 「全部题目」清除筛选 5. 筛选后 AppBar 显示当前筛选名称,✕ 清除 ## 题目显示 - 列表卡片显示题目前 80 字符摘要(body_preview) - 不显示 ID - 难度标签(易/中/难)+ 题型图标 - 已加入试题篮的题目显示红色移除按钮 ## 试题篮 - 单一默认篮子,自动创建 - 显示题目摘要而非 ID - 支持导出学生版/教师版 docx - 下拉刷新 ## API 认证 Dio 拦截器自动给所有请求添加签名头: ``` X-Timestamp: X-Signature: HMAC-SHA256(token, METHOD+PATH+timestamp) → hex ``` ## 依赖 | 包 | 用途 | |------|------| | flutter_riverpod | 状态管理 | | dio | HTTP 客户端 | | webview_flutter | WebView 题目渲染(公式+图片) | | shared_preferences | 服务器配置本地持久化 | | crypto | HMAC-SHA256 签名 |