乐于分享
好东西不私藏

惊!AI 竟能一天开发出离线记账 App

惊!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数据库

运行步骤

  1. 确保已安装Flutter SDK
  2. 进入项目目录:
    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']) : null            storePassword keystoreProperties['storePassword']        }    }    buildTypes {        release {            signingConfig signingConfigs.release            minifyEnabled true            shrinkResources true            proguardFiles getDefaultProguardFile('proguard-android.txt')'proguard-rules.pro'        }    }}

步骤 4:构建签名版本

flutter build apk --release# 或flutter build appbundle --release

📁 输出文件位置

构建类型
输出路径
APK
build/app/outputs/flutter-apk/app-release.apk
分架构 APK
build/app/outputs/flutter-apk/
AAB
build/app/outputs/bundle/release/app-release.aab

🔧 版本号配置

name: my_appdescription: My Flutter Appversion2.0.0+100  # 格式:build_name+build_number
问题
1、file_picker Windows 插件报错(最新 Flutter 3.22+ 兼容问题)
 # 替换成这个最新版  file_picker: ^8.3.0
2、Icon 编译报错(aot_android_asset_bundle failed)
flutter build apk --release --no-tree-shake-icons