惊!AI 竟能一天开发出离线记账 App
Flutter跨端离线记账App需求明细
一、核心功能需求
1. 账户管理
-
多账户支持(现金、银行卡、支付宝、微信等) -
账户余额实时显示 -
账户类型自定义(储蓄、信用卡、虚拟账户等) -
账户冻结/激活功能 -
初始余额设置
2. 收支记录
-
收入记录
-
收入分类(工资、奖金、投资收益、其他收入等) -
收入金额输入 -
收入日期选择 -
收入备注 -
收入账户选择 -
支出记录
-
支出分类(餐饮、交通、购物、娱乐、医疗、教育、住房等) -
支出金额输入 -
支出日期选择 -
支出备注 -
支出账户选择 -
支付方式(现金、银行卡、支付宝、微信等)
3. 分类管理
-
自定义收支分类 -
多级分类支持(二级分类) -
分类图标/颜色自定义 -
分类排序 -
分类启用/禁用
4. 数据统计
-
日统计
-
当日收支总额 -
当日收支明细列表 -
月统计
-
月度收支汇总 -
按分类统计饼图 -
按日趋势折线图 -
月度对比 -
年统计
-
年度收支汇总 -
按月统计柱状图 -
年度对比 -
自定义统计
-
自定义日期范围 -
按账户统计 -
按分类统计
二、高级功能需求
1. 预算管理
-
设置月度预算 -
按分类设置预算 -
预算使用进度显示 -
预算超支提醒 -
预算历史记录
2. 定期收支
-
设置定期收入(如月薪) -
设置定期支出(如房租、水电费) -
自动记账功能 -
定期记录编辑/删除
3. 搜索与筛选
-
按关键词搜索 -
按日期范围筛选 -
按分类筛选 -
按账户筛选 -
按金额范围筛选 -
收支类型筛选
4. 账本备份与恢复
-
本地数据导出(JSON/CSV格式) -
本地数据导入恢复 -
自动备份设置 -
备份文件管理
三、用户体验需求
1. 界面设计
-
简洁现代的UI设计 -
主题切换(亮色/暗色) -
自定义主题色 -
图表可视化展示 -
流畅的动画效果
2. 操作便捷性
-
快速记账入口 -
语音记账(可选) -
扫码记账(可选) -
常用分类快速选择 -
记账模板保存
3. 提醒功能
-
预算超支提醒 -
定期记账提醒 -
日记账账提醒
四、数据管理需求
1. 数据存储
-
使用SQLite本地数据库 -
离线使用,无需网络 -
数据加密存储(可选) -
数据版本管理
2. 数据同步
-
支持多设备数据导出导入 -
备份文件云端存储预留接口(为将来在线同步做准备)
五、设置功能
1. 基本设置
-
应用语言切换 -
货币符号设置 -
小数点位数设置 -
首页显示设置
2. 隐私与安全
-
应用密码/指纹锁 -
数据导出密码保护 -
脱敏显示设置
3. 关于
-
应用版本信息 -
使用帮助 -
反馈建议
六、技术需求
1. 跨平台支持
-
Android平台支持 -
iOS平台支持 -
统一的UI/UX体验
2. 性能要求
-
快速启动(<2秒) -
流畅的页面切换 -
大数据量查询优化 -
图表渲染性能优化
3. 兼容性
-
支持Android 5.0+ -
支持iOS 12.0+ -
适配各种屏幕尺寸
七、非功能需求
1. 可靠性
-
数据不丢失 -
崩溃自动恢复 -
数据备份机制
2. 安全性
-
本地数据加密 -
防止越权访问 -
敏感信息保护
3. 可维护性
-
模块化架构 -
代码注释完善 -
版本更新机制
八、可选扩展功能(后期迭代)
-
数据图表导出 -
记账提醒通知 -
收支目标设定 -
退款/退货记录 -
账单分期管理 -
多人共享账本 -
数据导出Excel -
打印报表 -
云端数据同步 -
AI智能分类建议
项目结构
expense_tracker/├── lib/│ ├── main.dart # 应用入口│ ├── models/ # 数据模型│ │ ├── account.dart│ │ ├── category.dart│ │ ├── transaction.dart│ │ ├── budget.dart│ │ └── recurring.dart│ ├── database/ # 数据库│ │ └── database_helper.dart│ ├── providers/ # 状态管理│ │ ├── account_provider.dart│ │ ├── transaction_provider.dart│ │ ├── category_provider.dart│ │ ├── budget_provider.dart│ │ └── recurring_provider.dart│ ├── screens/ # 页面│ │ ├── home_screen.dart│ │ ├── transaction_screen.dart│ │ ├── account_screen.dart│ │ ├── category_screen.dart│ │ ├── statistics_screen.dart│ │ ├── budget_screen.dart│ │ ├── recurring_screen.dart│ │ └── settings_screen.dart│ ├── widgets/ # 组件│ │ ├── account_card.dart│ │ ├── transaction_card.dart│ │ └── chart_widget.dart│ └── utils/ # 工具类│ ├── constants.dart│ ├── theme.dart│ └── export_helper.dart├── assets/├── pubspec.yaml # 依赖配置├── README.md # 项目说明└── .gitignore
已实现功能
✅ 核心功能
-
账户管理(多账户支持、实时余额) -
收支记录(快速记账、详细记录) -
分类管理(默认分类、自定义分类) -
数据统计(日/周/月/年统计、饼图展示)
✅ 高级功能
-
预算管理(设置预算、查看进度) -
定期收支(自动记账、多频率支持) -
搜索筛选(多条件筛选) -
数据备份(JSON导出/导入)
✅ 用户体验
-
亮色/暗色主题切换 -
Material Design 3设计 -
流畅的动画效果 -
离线SQLite数据库
运行步骤
-
确保已安装Flutter SDK -
进入项目目录: cd d:/AI/expense_tracker
flutter run
🚀 快速打包命令
# 1. 清理项目flutter clean# 2. 获取依赖flutter pub get# 3. 构建 Release APKflutter build apk --release# 4. 构建 Release AAB (Google Play)flutter build appbundle --release# 5. 构建分架构 APK (减小体积)flutter build apk --split-per-abi --release
🔐 配置签名(生产环境必需)
步骤 1:生成密钥库
# 进入 android 目录cd android# 生成密钥库文件keytool -genkey -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
参数说明:
my-release-key.jks
:密钥库文件名 my-key-alias
:密钥别名 10000
:有效期(天)
步骤 2:创建 key.properties
在 android/ 目录下创建 key.properties:
storePassword=你的密钥库密码keyPassword=你的密钥密码keyAlias=my-key-aliasstoreFile=my-release-key.jks
步骤 3:配置 build.gradle
编辑 android/app/build.gradle:
// 顶部添加def keystoreProperties = new Properties()def keystorePropertiesFile = rootProject.file("key.properties")if (keystorePropertiesFile.exists()) {keystoreProperties.load(new FileInputStream(keystorePropertiesFile))}android {// ... 其他配置signingConfigs {release {keyAlias keystoreProperties['keyAlias']keyPassword keystoreProperties['keyPassword']storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : nullstorePassword keystoreProperties['storePassword']}}buildTypes {release {signingConfig signingConfigs.releaseminifyEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}}
步骤 4:构建签名版本
flutter build apk --release# 或flutter build appbundle --release
📁 输出文件位置
|
|
|
|---|---|
|
|
build/app/outputs/flutter-apk/app-release.apk |
|
|
build/app/outputs/flutter-apk/ |
|
|
build/app/outputs/bundle/release/app-release.aab |
🔧 版本号配置
name: my_appdescription: My Flutter Appversion: 2.0.0+100 # 格式:build_name+build_number
# 替换成这个最新版file_picker: ^8.3.0
flutter build apk --release --no-tree-shake-icons

夜雨聆风