[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76355":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":14,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":8,"archived":17,"fork":17,"defaultBranch":18,"hasWiki":19,"hasPages":17,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},76355,"legado_flutter","lq-259\u002Flegado_flutter","lq-259",null,"Rust",137,13,79,1,0,55,42.94,false,"main",true,[],"2026-06-11 04:06:43","# Legado Flutter\n\n> 基于开源阅读应用 [Legado](https:\u002F\u002Fgithub.com\u002Fgedoor\u002Flegado) 的 Flutter + Rust 重构版本\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg)](LICENSE)\n[![Flutter Version](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFlutter-3.0+-blue.svg)](https:\u002F\u002Fflutter.dev)\n[![Rust Edition](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FRust-2024-orange.svg)](https:\u002F\u002Fwww.rust-lang.org)\n\n---\n\n## 📖 项目简介\n\nLegado Flutter 是对原 Android 应用 Legado（开源阅读）的完全重构，采用 **Flutter + Rust** 技术栈实现跨平台支持。\n\n### 为什么重构？\n\n- **跨平台**：原版仅支持 Android，重构后支持 Android、iOS、Windows、macOS、Linux\n- **性能提升**：Rust 核心引擎提供更高性能和更好内存安全性\n- **可维护性**：清晰的模块划分和现代化的技术栈\n- **功能对等**：保持与原版功能对等，同时扩展新特性\n\n### 参考项目\n\n本项目重构过程中大量参考了以下两个 Legado 衍生项目，特别是在书源解析规则、阅读器交互、翻页动画几何、阅读进度存储等关键链路上对照其实现细节：\n\n- **[LegadoTeam\u002FLegado-Tauri](https:\u002F\u002Fgithub.com\u002FLegadoTeam\u002FLegado-Tauri)** — Legado 的 Tauri (Rust + 前端) 重构版，启发了本项目的 Rust core 模块划分（core-net \u002F core-parser \u002F core-source \u002F core-storage）与 FFI 桥接思路\n- **[HapeLee\u002Flegado-with-MD3](https:\u002F\u002Fgithub.com\u002FHapeLee\u002Flegado-with-MD3)** — Legado 的 Material Design 3 fork，本项目的仿真翻页（5 段贝塞尔几何 + 4 段阴影）、章节窗口管理（`durChapterIndex` \u002F `durChapterPos` 字符 offset 语义）、邻章预测量、替换规则 scope 子串匹配等实现 1:1 对照其 Kotlin 源码翻译为 Dart\n\n仓库内 `.trellis\u002Ftasks\u002F` 目录里多个任务的 PRD \u002F research 都明确记录了对照来源（如 `SimulationPageDelegate.kt L188-L206 setDirection` 镜像逻辑、`ReadBook.kt L626-L635 loadContent` 预拉链路、`Book.kt L93-L107 durChapterPos` 字段语义等）。\n\n### 技术架构\n\n```\n┌─────────────────────────────────────────┐\n│           Flutter UI Layer               │\n│    (书架\u002F阅读器\u002F搜索\u002F书源管理\u002F设置)        │\n└──────────────────┬──────────────────────┘\n                   │\n         flutter_rust_bridge (FFI)\n                   │\n┌──────────────────▼──────────────────────┐\n│          Rust Core Engine                │\n│                                          │\n│  ┌──────────┐ ┌──────────┐ ┌─────────┐ │\n│  │ core-net │ │core-     │ │core-    │ │\n│  │ 网络引擎  │ │parser    │ │storage  │ │\n│  │          │ │ 格式解析  │ │ SQLite  │ │\n│  └──────────┘ └──────────┘ └─────────┘ │\n│                │                        │\n│         ┌──────▼──────┐                 │\n│         │ core-source │                 │\n│         │ 书源规则引擎 │                 │\n│         └─────────────┘                 │\n└──────────────────────────────────────────┘\n```\n\n详见 [架构设计文档](docs\u002FARCHITECTURE.md)\n\n---\n\n## 🚀 快速开始\n\n### 前置要求\n\n- **Flutter**: >=3.0.0 ([安装指南](https:\u002F\u002Fdocs.flutter.dev\u002Fget-started\u002Finstall))\n- **Rust**: edition 2024 ([安装指南](https:\u002F\u002Fwww.rust-lang.org\u002Ftools\u002Finstall))\n- **flutter_rust_bridge_codegen**: ^2.0.0\n  ```bash\n  cargo install flutter_rust_bridge_codegen\n  ```\n- **Android NDK**: 28.2.13676358（Android 构建需要）\n\n### 构建步骤\n\n#### 1. 克隆项目\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Flq-259\u002Flegado_flutter.git\ncd legado_flutter\n```\n\n#### 2. 初始化 Rust 核心\n```bash\ncd core\ncargo build --release\ncd ..\n```\n\n#### 3. 生成 FFI 绑定（如修改了 Rust API）\n```bash\ncd core\u002Fbridge\nflutter_rust_bridge_codegen generate\ncd ..\u002F..\n```\n\n#### 4. 安装 Flutter 依赖\n```bash\ncd flutter_app\nflutter pub get\ncd ..\n```\n\n#### 5. 一键构建（推荐 \u002F Android）\n\n```bash\n# Debug 构建 + 安装到设备\nbash build_android_debug.sh\n\n# Release 构建（输出到 dist\u002F，含 SHA256 校验和）\nbash build_android_release.sh\n```\n\n或手动：\n\n```bash\n# Android\ncd flutter_app\nflutter run\n\n# iOS (需要 macOS)\nflutter run -d ios\n\n# 桌面平台\nflutter run -d windows  # 或 macos \u002F linux\n```\n\n---\n\n## 📂 项目结构\n\n```\nlegado_flutter\u002F\n├── core\u002F                          # Rust 核心引擎 (cargo workspace)\n│   ├── core-net\u002F                 # 网络引擎 (HTTP \u002F Cookie \u002F 代理 \u002F SSRF 防护)\n│   ├── core-parser\u002F              # 格式解析 (TXT \u002F EPUB \u002F UMD)\n│   ├── core-storage\u002F             # 存储引擎 (SQLite + DAOs)\n│   ├── core-source\u002F              # 书源规则引擎（JS evaluation \u002F 替换规则 \u002F scope 匹配）\n│   └── bridge\u002F                   # FRB FFI 桥接层\n├── flutter_app\u002F                   # Flutter 应用\n│   ├── lib\u002F\n│   │   ├── core\u002F                 # providers \u002F api \u002F router\n│   │   ├── features\u002F             # 功能模块（reader \u002F bookshelf \u002F search \u002F source \u002F settings ...）\n│   │   └── src\u002Frust\u002F             # FRB 自动生成的 Dart 绑定\n│   └── pubspec.yaml\n├── docs\u002F                          # 项目文档\n├── build_android_debug.sh         # Android Debug 一键构建\n├── build_android_release.sh       # Android Release 一键构建\n└── README.md\n```\n\n---\n\n## 🎯 当前进度\n\n| 模块 | 状态 | 说明 |\n|------|------|------|\n| Rust core 引擎 | ✅ 可用 | net \u002F parser \u002F storage \u002F source 全部就绪，264 cargo test 全绿 |\n| Flutter UI | ✅ 可用 | 书架 \u002F 阅读器 \u002F 搜索 \u002F 书源 \u002F 设置 \u002F TTS \u002F WebDAV |\n| 阅读器 | ✅ 可用 | 5 种翻页动画（仿真\u002F覆盖\u002F平移\u002F淡入淡出\u002F无动画）+ 滚动模式 |\n| 阅读进度 | ✅ 可用 | 章节 + 章内字符 offset 级恢复（对齐 MD3 `durChapterPos`）|\n| 搜索 | ✅ 可用 | 多书源并行 + 精确模式过滤 |\n| 替换规则 | ✅ 可用 | 含 scope 子串匹配；regex 防 ReDoS |\n| TTS \u002F WebDAV | ✅ 可用 | TTS 朗读 + WebDAV 备份 |\n| 书源 JS evaluation | ✅ 可用 | Rust 端实现，远程书源兼容 |\n| 跨平台支持 | 🚧 部分 | Android 全功能可用；iOS \u002F Desktop 未充分测试 |\n\n215+ Flutter widget\u002Funit test 全绿；0 issue analyze。\n\n---\n\n## 🤝 贡献指南\n\n欢迎贡献！请参考以下流程：\n\n1. Fork 本项目\n2. 创建特性分支 (`git checkout -b feature\u002FAmazingFeature`)\n3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)\n4. 推送到分支 (`git push origin feature\u002FAmazingFeature`)\n5. 提交 Pull Request\n\n### 贡献方向\n\n- 🐛 报告 Bug\n- 💡 提出新功能建议\n- 📝 完善文档\n- 💻 提交代码（Rust\u002FFlutter\u002F文档）\n- 🧪 编写测试用例\n\n---\n\n## 📄 开源协议\n\n本项目采用 MIT 协议 - 详见 [LICENSE](LICENSE)\n\n原 Legado 项目采用 AGPL-3.0，本重构项目采用 MIT 以便更广泛的使用。\n\n参考项目分别遵循其各自协议：\n- [LegadoTeam\u002FLegado-Tauri](https:\u002F\u002Fgithub.com\u002FLegadoTeam\u002FLegado-Tauri)：见上游 LICENSE\n- [HapeLee\u002Flegado-with-MD3](https:\u002F\u002Fgithub.com\u002FHapeLee\u002Flegado-with-MD3)：GPL-3.0（继承 Legado 上游）\n\n---\n\n## 🙏 致谢\n\n- **[Legado (gedoor\u002Flegado)](https:\u002F\u002Fgithub.com\u002Fgedoor\u002Flegado)** — 原项目作者 gedoor 及贡献者，提供了完整的阅读器架构与书源生态\n- **[LegadoTeam\u002FLegado-Tauri](https:\u002F\u002Fgithub.com\u002FLegadoTeam\u002FLegado-Tauri)** — Tauri 重构启发了 Rust core 模块划分思路\n- **[HapeLee\u002Flegado-with-MD3](https:\u002F\u002Fgithub.com\u002FHapeLee\u002Flegado-with-MD3)** — MD3 fork，本项目的翻页动画几何 \u002F 进度存储语义 \u002F 邻章管理 1:1 对照其 Kotlin 实现\n- [Flutter](https:\u002F\u002Fflutter.dev) — UI 框架\n- [Rust](https:\u002F\u002Fwww.rust-lang.org) — 核心引擎语言\n- [flutter_rust_bridge](https:\u002F\u002Fgithub.com\u002Ffzyzcjy\u002Fflutter_rust_bridge) — FFI 桥接方案\n\n---\n\n## 📧 联系方式\n\n- 项目 Issues: [GitHub Issues](https:\u002F\u002Fgithub.com\u002Flq-259\u002Flegado_flutter\u002Fissues)\n- Releases: [GitHub Releases](https:\u002F\u002Fgithub.com\u002Flq-259\u002Flegado_flutter\u002Freleases)\n\n---\n\n**注意**: 本项目与原 Legado 无官方关联，是由社区驱动的重构项目。\n","Legado Flutter 是基于开源阅读应用 Legado 的 Flutter 和 Rust 重构版本，旨在提供跨平台支持。项目采用 Flutter 构建用户界面，并利用 Rust 开发核心引擎，以实现更高的性能和更好的内存安全性。其主要功能包括书架管理、阅读器、搜索、书源管理和设置等，保持了与原版 Legado 功能的一致性，并引入了新的特性。Legado Flutter 适合需要在多种平台上（如 Android、iOS、Windows、macOS 和 Linux）运行的电子书阅读应用开发场景，特别适用于对性能和安全性有较高要求的情况。",2,"2026-05-19 02:31:58","CREATED_QUERY"]