# flutter-pass-log **Repository Path**: mj-project/flutter-pass-log ## Basic Information - **Project Name**: flutter-pass-log - **Description**: 简洁的密码记录应用,纯本地运行,对关键数据进行加密存储 - **Primary Language**: Dart - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-06-20 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Flutter, Dart, getx, Android ## README # PassLog 一个基于 Flutter 开发的本地密码记录应用,用于按分类保存账号、密码和备注信息。 ## 项目简介 PassLog 面向个人场景,核心目标是提供一个轻量、离线、可迁移的密码记录工具。应用数据默认保存在本地,密码记录会在写入前加密,进入应用需要先通过 6 位解锁密码。 ## 当前功能 ### 1. 密码记录管理 * 新增密码记录 * 编辑已有密码记录 * 删除密码记录 * 按分类查看密码记录 * 通过关键字搜索密码记录 每条密码记录当前包含以下字段: * 密码名称 * 登录账号 * 登录密码 * 所属分类 * 备注信息 ### 2. 分类管理 * 内置默认分类 * 支持新增分类 * 支持编辑分类名称和图标 * 支持拖拽调整分类顺序 * 支持删除分类 删除分类时,该分类下已有的密码记录会自动迁移到默认分类,避免数据丢失。 ### 3. 锁屏与安全 * 首次启动会要求创建 6 位解锁密码 * 每次进入应用需要先解锁 * 支持在设置页修改解锁密码 * 修改解锁密码时,会对现有密码数据重新加密 ### 4. 本地加密存储 * 密码记录写入 Hive 本地数据库前会先加密 * 应用解锁后会派生当前会话使用的加密密钥 * 数据迁移文件也会使用源设备的解锁密码进行加密保护 当前代码中可以看到的加密相关实现位于: * `lib/app/core/utils/encryption.dart` ### 5. 数据迁移 * 支持导出全部密码数据 * 支持按分类、按条目部分导出 * 支持导入 `.passlog` 格式迁移文件 * 支持先解析并预览导入内容,再选择部分数据导入 * 导入时需要输入源 App 的解锁密码完成校验 * 导入重名或 ID 冲突的数据时会自动处理,尽量避免覆盖现有内容 ### 6. 主题设置 * 支持切换主题主色 * 主题色会持久化保存 项目中已经保留了暗色模式相关能力,但当前主要暴露的是主题主色设置。 ## 技术栈 * Flutter * Dart * GetX * Hive * Material 3 主要依赖: * `get` * `hive` * `flutter_easyloading` * `flutter_iconpicker` * `flutter_slidable` * `animated_reorderable_list` * `flutter_screen_lock` * `file_picker` * `dart_sm` ## 运行环境 * Flutter 3.24.0 * Dart 3.5.0 `pubspec.yaml` 中声明的 Dart SDK 范围为: ```yaml sdk: '>=3.3.0 <4.0.0' ``` ## 本地运行 ```bash # 首次运行项目需要先执行这三条命令 flutter pub get run flutter_iconpicker:generate_packs --clear run flutter_iconpicker:generate_packs --packs roundedMaterial # 后续运行项目只需执行这条命令 flutter run ``` ## 打包说明 推荐使用以下命令打包 Android APK: ```bash flutter build apk --no-tree-shake-icons --split-per-abi --release ``` 注意: * `--no-tree-shake-icons` 不能省略 * 项目使用了 `flutter_iconpicker`,省略后可能导致图标资源相关问题 ## 项目结构 ```text lib/ app/ core/ 核心工具、主题、加密逻辑 data/ Provider 与本地服务 modules/ 页面模块(首页、锁屏、分类、密码、设置、迁移) routes/ 路由配置 main.dart ``` ## 已实现页面 * 首页:密码列表、分类分组、搜索 * 分类管理页:分类增删改、图标选择、拖拽排序 * 密码编辑页:表单录入与修改 * 数据迁移页:导入 / 导出 / 预览 * 系统设置页:主题主色、解锁密码修改 * 锁屏页:首次创建密码与后续解锁 ## 界面预览 | 锁屏页 | 首页 | 菜单 | |:---:|:---:|:---:| | ![](lib/pic/PixPin_2026-03-11_09-33-19.png) | ![](lib/pic/PixPin_2026-03-11_09-33-41.png) | ![](lib/pic/PixPin_2026-03-11_09-33-48.png) | | 数据迁移 | 系统设置 | 添加密码 | |:---:|:---:|:---:| | ![](lib/pic/PixPin_2026-03-11_09-33-54.png) | ![](lib/pic/PixPin_2026-03-11_09-34-00.png) | ![](lib/pic/PixPin_2026-03-11_09-34-07.png) | ## 注意事项 * 这是一个偏个人使用场景的本地应用,不依赖云端同步 * 如果忘记解锁密码,将无法正常读取当前已加密的数据 * 迁移文件导入时,必须输入导出该文件时对应 App 的解锁密码 ## License 项目根目录包含 [LICENSE](LICENSE) 文件,当前使用 MIT License。