Files
app/README.md
T
2026-05-26 17:02:18 +08:00

201 lines
8.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# app
[![Flutter](https://img.shields.io/badge/Flutter-3.41.6-blue?logo=flutter)](https://flutter.dev)
[![Dart](https://img.shields.io/badge/Dart-3.11.4-blue?logo=dart)](https://dart.dev)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
> 🚀 基于 Flutter 的 公云存储 官方客户端,提供移动端/PC便捷管理体验
---
## 📖 项目简介
功能丰富的云存储客户端,支持文件上传、下载、管理和分享。针对 公云存储 API 进行了基本完整适配和优化。
### ✨ 特性亮点
- 🎯 现支持的功能基本完整适配 公云存储 API
- 📱 跨平台支持(Android / Linux / Windows / Web
- 🎨 现代化 Material Design 3 界面
- ⚡ 支持断点续传和下载进度监听
- 🔐 安全的 Token 认证机制
---
## 🛠️ 技术栈
| 组件 | 版本 |
|------|------|
| Flutter | 3.41.6 |
| Dart | 3.11.4 |
| 后端 API | 公云存储 |
**开发环境详情:**
```
Debia
Flutter 3.41.6 • channel stable
Framework • revision db50e20168 • 2026-03-25
Dart 3.11.4 • DevTools 2.54.2
```
**构建环境详情:**
```
Android: compileAPI: 36, targetAPI: 36, miniAPI: 34
Windows: 11
Linux: Debian 12
```
---
## 📋 功能状态
### ✅ 基础功能
| 功能模块 | 状态 | 说明 |
|--------|------|----------------------------------------|
| 用户登录 | ✅ | 自定义服务器, Token 认证、持久化 |
| 文件列表 | ✅ | 列表/网格双视图 |
| 刷新列表 | ✅ | 增量更新 |
| 全屏手势 | ✅ | 右侧左滑返回上级目录, 根目录提示退出 |
| 文件下载 | ✅ | 原生/浏览器双实现、进度监听、断点续传、后台下载 |
| 文件上传 | ✅ | 进度展示、分片上传<服务端需要开启> Windows/Linux支持拖拽上传 |
| 删除文件 | ✅ | 删除文件 |
| 重命名 | ✅ | 重命名文件 |
| 移动复制 | ✅ | 移动/复制文件, 添加文件夹选择器对话框 |
| 我的分享 | ✅ | 完整的分享功能, 包括创建,删除,管理列表,编辑等 |
| 找回密码 | ✅ | 使用邮箱找回密码 (依赖控制台STMP可用性) |
| 用户注册 | ✅ | 使用邮箱注册新用户 (依赖控制台允许注册新用户) |
| 回收站 | ✅ | 文件恢复/彻底删除 |
| WebDav | ✅ | 增删改查(硬编码查50条) |
| 文件搜索 | ✅ | 全局搜索功能, 点击跳转到对应目录 |
| 设置页面 | ✅ | 增加多个实用的设置项 |
| 离线下载 | ✅ | 离线下载(依赖服务端aria2可用) |
| 缩略图 | ✅ | 网格布局缩略图懒加载支持 |
> 文件下载
> 原生/浏览器双实现原因:
>
> > ~~选型使用了 `flutter_downloader` 来实现Android后台下载, 避免切换后台下载异常, 但这玩意儿不支持跨平台, 所以PC端就实现了获取文件url地址在浏览器打开进行下载; 正常应该选用 `background_downloader`~~
>
> 文件上传
>
> > 看后端接口文档, 必须要按分片顺序上传, 看着是不支持多分片并发上传, 差点意思, 效率不高.
------
### ✅ 设置页面
| 功能模块 | 状态 | 说明 |
|------|----|-------------------------------------|
| 个人资料 | ✅ | 修改昵称和头像 |
| 安全设置 | ✅ | 修改密码/2FA等 |
| 快捷入口 | ✅ | 概览页快捷入口设置, 默认4个, 支持新增修改和调整顺序 |
| 文件偏好 | ✅ | 历史版本开关, 视图同步, 个人主页分享链接可见性 |
| 应用设置 | ✅ | 深色模式/主题/语言/gravatar镜像/下载设置/缓存/日志管理等 |
| 关于 | ✅ | APP信息 |
-----
### ✅ 预览模块
| 功能模块 | 状态 | 说明 |
|----------|------|------|
| 图片预览 | ✅ | 全平台支持, win/linux 支持CTRL+鼠标滚轮缩放,双击恢复,平滑动画 |
| PDF预览 | ✅ | 全平台支持, 支持缩放, 选中文字复制等 |
| 音频预览 | ✅ | 全平台支持流式播放, 算好看的播放器UI, 进度条, 暂停, 快进/退10秒 |
| 视频预览 | ✅ | 全平台支持流式播放, 暂停, 调整音量, 全屏, 增加倍速支持 |
| 文本预览 | ✅ | 全平台支持, 189中语言代码高亮, SourceCodePro等宽字体, 一键复制 |
| MD预览 | ✅ | 全平台支持, 类github风格, TOC, 暗色模式支持.(dark缺陷) |
> 音视频预览库底层是 mpv 提供编解码能力, 理论上 mpv 支持的格式均支持, 具体没有实测;
>
> (待改进)视频预览进度条内嵌: MaterialVideoControlsTheme -> MaterialVideoControls
>
> 文本预览现在是一次性渲染, 大文件会有性能问题, 如果借用listview来优化, 会丢失代码高亮, 暂时保持现阶段的情况, 另外应该也没啥大文本文件预览的场景
### 🚧 开发中
| 功能模块 | 进度 | 说明 |
|---------------|------|-----------------------------|
| ~~文件预览~~ | ✅ | 图片/文档/视频等预览(核心功能基本完成) |
| ~~设置页面~~ | ✅ | 用户信息, 2FA等 |
| ~~桌面端托盘~~ | ✅ | 桌面端托盘 |
| ~~桌面端原生下载~~ | ✅ | 统一为 `background_downloader` |
| ~~我的页面~~ | ✅ | 我的页面 |
| ~~批量C&M~~ | ✅ | 批量移动/复制 |
| ~~桌面端支持拖拽上传~~ | ✅ | windows/linux 支持拖拽上传到当前文件夹 |
### 📝 待优化
- [x] SnackBar 样式美化 (`oktoast`)
- [x] 错误/提示优化 (重构所有SnackBar为okToast)
- [x] 重构所有开发过程中的`debugPrint``logger`
- [x] Windows/Linux平台使用`background_downloader`替代`flutter_downloader`下载, 增加下载速度显示
- [x] ListView 似乎还是完整重绘, 上传插值似乎也还是在完整重绘
### 🚧 待重构
| 功能模块 | 进度 | 说明 |
|-------------------------|----|---------------------------------------------------------------------------|
| UI | ✅ | windows/linux/Android phone&pad 完整ui重构 |
| `background_downloader` | ✅ | flutter_downloader -> background_downloader 全平台统一下载管理, 支持后台, 断点续传, 自动恢复等 |
| 搜索 | ✅ | 移除旧搜索, 实现新版本支持实时搜索, 搜索历史, 搜索防抖; 优化搜索结果点击跳转 |
| 拖拽上传 | ✅ | Windows/Linux支持拖拽上传 |
---
## 🚀 快速开始
### 环境要求
- Flutter SDK >= 3.41.6
- Dart SDK >= 3.11.4
- 公云存储 后端服务
### 安装依赖
```bash
flutter pub get
```
### 运行项目
```bash
flutter run # pdf 和 音视频会再构建过程中下载github上的依赖,自行解决网络问题
```
### 构建发布
```bash
# Android
flutter build apk --release
# Linux
flutter build -d linux --release
# windows
flutter build -d windows --release
```
---
## 📬 联系方式
- 📧 问题反馈:提交 Issue
- 💬 讨论交流:无
---
## ⚖️ 开源协议 (License)
本项目采用 **AGPL-3.0 (GNU Affero General Public License v3.0)** 协议开源。
### 核心约束:
1. **传染性**:如果你修改了本项目代码并重新发布,你的项目也必须以 AGPL-3.0 协议开源。
2. **云端公开声明**:如果你在服务器/云真机等上运行本项目并向公众提供网络服务(网盘服务),你必须向用户公开你所使用的源代码(包括任何修改)。
3. **禁止闭源商业化**:未经授权,禁止将本项目代码闭源后作为商业产品销售。
详情请参阅项目根目录下的 [LICENSE](./LICENSE) 文件。
---