generated from dellevin/template
187 lines
4.5 KiB
Markdown
187 lines
4.5 KiB
Markdown
# MookNote - Flutter 观影阅读笔记应用
|
||
|
||
## 项目简介
|
||
MookNote 是一款用于记录观影、阅读和笔记的 Android 应用,使用 Flutter 框架开发。
|
||
|
||
## 功能特性
|
||
|
||
### 主界面
|
||
- **顶部导航栏**: 左侧菜单按钮 + 标题 + 搜索按钮
|
||
- **三个标签页**: 观影、阅读、笔记
|
||
- **底部导航栏**: 主页、新增、我的
|
||
|
||
### 观影模块
|
||
- 三个状态筛选:已看、想看、在看
|
||
- 显示影片标题、年份、评分、观看日期、笔记
|
||
- 支持添加和管理观影记录
|
||
|
||
### 阅读模块
|
||
- 三个状态筛选:读完、在读、准备读
|
||
- 显示书籍标题、作者、评分、阅读日期、笔记
|
||
- 支持添加和管理书籍记录
|
||
|
||
### 笔记模块
|
||
- 显示所有笔记列表
|
||
- 支持标签分类
|
||
- 显示笔记内容和更新时间
|
||
|
||
### 侧边菜单
|
||
- GitHub 风格热力图(年度记录可视化)
|
||
- 统计功能入口
|
||
- 回收站入口
|
||
- 设置入口
|
||
|
||
## 环境要求
|
||
|
||
### 必需软件
|
||
1. **Flutter SDK** (建议 3.5.0+)
|
||
- 下载地址:https://docs.flutter.dev/get-started/install
|
||
|
||
2. **Android Studio**
|
||
- 下载地址:https://developer.android.com/studio
|
||
|
||
3. **Android SDK** (通过 Android Studio 安装)
|
||
|
||
### 环境配置步骤
|
||
|
||
#### Windows 系统
|
||
|
||
1. **下载并安装 Flutter SDK**
|
||
```
|
||
- 下载 Flutter SDK zip 文件
|
||
- 解压到 C:\src\flutter(或其他非系统目录)
|
||
- 将 C:\src\flutter\bin 添加到系统环境变量 Path
|
||
```
|
||
|
||
2. **验证 Flutter 安装**
|
||
```bash
|
||
flutter --version
|
||
flutter doctor
|
||
```
|
||
|
||
3. **安装 Android Studio**
|
||
```
|
||
- 下载并安装 Android Studio
|
||
- 打开 Android Studio → Settings → Appearance & Behavior → System Settings → Android SDK
|
||
- 安装 Android SDK Platform(建议 API 33+)
|
||
- 安装 Android SDK Build-Tools
|
||
- 安装 Android Emulator(可选,用于模拟器测试)
|
||
```
|
||
|
||
4. **接受 Android 许可证**
|
||
|
||
```bash
|
||
flutter doctor --android-licenses
|
||
```
|
||
|
||
## 运行项目
|
||
|
||
### 1. 克隆/复制项目后,进入项目目录
|
||
```bash
|
||
cd mooknote
|
||
```
|
||
|
||
### 2. 安装依赖
|
||
|
||
```bash
|
||
flutter pub get
|
||
# 如果失败可以先添加代理再进行get
|
||
$env:HTTP_PROXY="http://127.0.0.1:10808"
|
||
$env:HTTPS_PROXY="http://127.0.0.1:10808"
|
||
```
|
||
|
||
### 3. 连接设备或启动模拟器
|
||
|
||
- 连接 Android 真机(需开启 USB 调试)
|
||
- 或启动 Android 模拟器
|
||
|
||
### 4. 运行应用
|
||
```bash
|
||
flutter run
|
||
```
|
||
|
||
或使用 Android Studio:
|
||
- 打开项目
|
||
- 点击运行按钮 (Run)
|
||
|
||
## 技术栈
|
||
|
||
- **Flutter**: 跨平台移动应用框架
|
||
- **Dart**: 编程语言
|
||
- **Provider**: 状态管理
|
||
- **Material Design 3**: UI 设计规范
|
||
|
||
## 后续开发计划
|
||
|
||
### 数据存储
|
||
|
||
- [x] 集成 SQLite 数据库(sqflite 包)
|
||
- [x] 实现本地数据持久化
|
||
- [x] 数据备份与恢复
|
||
|
||
### 功能增强
|
||
|
||
- [x] 添加/编辑表单页面
|
||
- [x] 详情页完整实现
|
||
- [x] 搜索功能
|
||
- [x] 统计图表页面
|
||
- [x] 回收站功能
|
||
|
||
### 高级功能
|
||
|
||
- [x] 导出功能(JSON)
|
||
- [ ] 云同步
|
||
|
||
## 双向同步规则
|
||
|
||
双向同步的规则如下:
|
||
|
||
**1. 数据库文件同步规则:**
|
||
|
||
| 情况 | 操作 |
|
||
| :---------------- | :----------------------- |
|
||
| 远程数据库不存在 | 上传本地数据库 |
|
||
| 本地较新(>10秒) | 上传本地数据库 |
|
||
| 远程较新(>10秒) | 下载远程数据库 |
|
||
| 时间相近(±10秒) | 不传输数据库,仅同步图片 |
|
||
|
||
**2. 图片同步规则:**
|
||
|
||
| 情况 | 操作 |
|
||
| :--------------- | :------------------------------------- |
|
||
| 本地有,远程没有 | 上传到远程 |
|
||
| 远程有,本地没有 | 下载到本地 |
|
||
| 两边都有 | 不处理(暂不支持基于时间戳的图片同步) |
|
||
|
||
**3. 同步方向选项:**
|
||
|
||
- **双向同步** - 按上述规则自动判断上传/下载
|
||
- **仅上传** - 只上传本地数据库和所有本地图片
|
||
- **仅下载** - 只下载远程数据库和所有远程图片
|
||
|
||
**4. 时间戳比较:**
|
||
|
||
```dart
|
||
// 10秒误差范围内视为相同
|
||
if (timeDiff > 10) {
|
||
// 本地较新,上传
|
||
} else if (timeDiff < -10)
|
||
{
|
||
// 远程较新,下载
|
||
} else
|
||
{
|
||
// 时间相近,仅同步图片
|
||
}
|
||
```
|
||
|
||
**5. 文件路径:**
|
||
|
||
- 数据库:`/mooknote/mooknote.db`
|
||
- 图片:`/mooknote/images/图片文件名`
|
||
|
||
**注意:**
|
||
|
||
- 目前图片同步是基于文件存在性判断,不是基于修改时间
|
||
- 下载新数据库后,应用会自动重新加载数据(调用 Provider 的 load 方法)
|
||
- 首次同步会创建远程目录结构
|