Flutter 框架跨平台鸿蒙开发 - 家庭财务规划应用
摘要: 家庭财务规划是一款开源鸿蒙跨平台应用,帮助用户全面管理家庭收支。核心功能包括: 收支管理:记录收入支出,分类统计交易记录 财务分析:通过图表展示消费趋势、预算执行情况 智能建议:根据储蓄率、预算超支等提供个性化理财建议 目标追踪:设定储蓄目标,计算财务自由度 应用采用模块化设计,包含仪表盘、记账、分析、建议四大界面,支持多维度数据统计和可视化展示。内置10+收支类型分类,通过算法自动生成储
欢迎加入开源鸿蒙跨平台社区:
https://openharmonycrossplatform.csdn.net
让每一分钱都有归处
收支分析 · 理财建议 · 家庭财务管家
一、应用概述
运行效果图





1.1 产品定位
家庭财务规划是一款帮助家庭进行全面财务管理的工具应用。通过记录收支、分析消费习惯、提供理财建议,帮助用户实现财务目标,让家庭财富稳健增长。
1.2 核心价值
1.3 功能架构
二、数据模型设计
2.1 收支类型枚举
应用支持多种收支类型分类:
| 类型 | 图标 | 颜色 | 描述 | 典型场景 |
|---|---|---|---|---|
| 工资收入 | 💰 | #4CAF50 | 固定薪资收入 | 月薪、年终奖 |
| 兼职收入 | 💼 | #2196F3 | 额外劳动收入 | 兼职、外包 |
| 投资收益 | 📈 | #9C27B0 | 投资回报收入 | 股息、基金收益 |
| 生活支出 | 🏠 | #F44336 | 日常开销 | 房租、水电 |
| 餐饮支出 | 🍜 | #FF9800 | 饮食消费 | 外卖、聚餐 |
| 交通支出 | 🚗 | #00BCD4 | 出行费用 | 加油、打车 |
| 购物支出 | 🛒 | #E91E63 | 商品购买 | 日用品、服饰 |
| 娱乐支出 | 🎮 | #673AB7 | 休闲消费 | 游戏、电影 |
| 医疗支出 | 🏥 | #795548 | 健康支出 | 看病、买药 |
| 教育支出 | 📚 | #3F51B5 | 学习投资 | 课程、书籍 |
2.2 核心数据模型
class Transaction {
final String id;
final TransactionType type;
final TransactionCategory category;
final double amount;
final String description;
final DateTime date;
final String? member;
final List<String> tags;
}
class Budget {
final String id;
final String name;
final TransactionCategory category;
final double limit;
final double spent;
final DateTime startDate;
final DateTime endDate;
}
class SavingsGoal {
final String id;
final String name;
final double targetAmount;
final double currentAmount;
final DateTime deadline;
final GoalPriority priority;
}
class FinancialAdvice {
final String id;
final AdviceType type;
final String title;
final String content;
final double relevance;
final List<String> actionItems;
}
2.3 理财建议类型
| 类型 | 图标 | 描述 | 触发条件 |
|---|---|---|---|
| 储蓄建议 | 🐷 | 优化储蓄策略 | 储蓄率低于20% |
| 消费预警 | ⚠️ | 超支提醒 | 支出超过预算 |
| 投资建议 | 📊 | 资产配置建议 | 有闲置资金 |
| 风险提示 | 🛡️ | 财务风险预警 | 应急储备不足 |
| 目标激励 | 🎯 | 目标进度提醒 | 接近目标期限 |
三、界面设计
3.1 页面结构
3.2 首页仪表盘
核心组件:
| 组件 | 功能 | 交互 |
|---|---|---|
| 资产总览 | 显示总资产、负债、净值 | 点击查看详情 |
| 收支概览 | 本月收入/支出/结余 | 滑动切换月份 |
| 预算进度 | 各分类预算执行情况 | 点击进入预算管理 |
| 最近交易 | 最近5笔交易记录 | 点击查看全部 |
| 快速记账 | 一键添加收支 | 弹出记账表单 |
3.3 收支记录页
3.4 财务分析页
分析维度:
3.5 理财建议页
建议展示结构:
┌─────────────────────────────────────┐
│ 📊 投资建议 │
│ ───────────────────────────────── │
│ 根据您的财务状况,建议将闲置资金 │
│ 分配到以下渠道: │
│ │
│ • 货币基金: 30% (应急储备) │
│ • 债券基金: 40% (稳健增值) │
│ • 股票基金: 30% (长期投资) │
│ │
│ [查看详细建议] [忽略] │
└─────────────────────────────────────┘
四、核心功能实现
4.1 收支记录功能
void addTransaction({
required TransactionType type,
required TransactionCategory category,
required double amount,
required String description,
String? member,
List<String> tags = const [],
}) {
final transaction = Transaction(
id: 'txn_${DateTime.now().millisecondsSinceEpoch}',
type: type,
category: category,
amount: amount,
description: description,
date: DateTime.now(),
member: member,
tags: tags,
);
_transactions.insert(0, transaction);
_updateStatistics();
_generateAdvice();
}
4.2 财务分析算法
收支结余计算:
结余 = ∑ i = 1 n 收入 i − ∑ j = 1 m 支出 j \text{结余} = \sum_{i=1}^{n} \text{收入}_i - \sum_{j=1}^{m} \text{支出}_j 结余=i=1∑n收入i−j=1∑m支出j
储蓄率计算:
储蓄率 = 结余 总收入 × 100 % \text{储蓄率} = \frac{\text{结余}}{\text{总收入}} \times 100\% 储蓄率=总收入结余×100%
财务自由度:
财务自由度 = 被动收入 总支出 × 100 % \text{财务自由度} = \frac{\text{被动收入}}{\text{总支出}} \times 100\% 财务自由度=总支出被动收入×100%
4.3 智能建议生成
List<FinancialAdvice> generateAdvice() {
final advice = <FinancialAdvice>[];
final savingsRate = _calculateSavingsRate();
if (savingsRate < 0.2) {
advice.add(FinancialAdvice(
type: AdviceType.savings,
title: '储蓄率偏低',
content: '建议将储蓄率提升至20%以上...',
relevance: 0.9,
));
}
final emergencyFund = _calculateEmergencyFund();
if (emergencyFund < 3) {
advice.add(FinancialAdvice(
type: AdviceType.risk,
title: '应急储备不足',
content: '建议保持3-6个月支出的应急储备...',
relevance: 0.85,
));
}
return advice..sort((a, b) => b.relevance.compareTo(a.relevance));
}
五、数据可视化
5.1 收支趋势图
5.2 预算执行进度
生活支出 ████████████░░░░░░░░ 60% ¥6,000/¥10,000
餐饮支出 ████████████████░░░░ 80% ¥2,400/¥3,000
交通支出 ██████░░░░░░░░░░░░░░ 30% ¥600/¥2,000
购物支出 ████████████████████ 100% ¥2,000/¥2,000 ⚠️
娱乐支出 ████░░░░░░░░░░░░░░░░ 20% ¥400/¥2,000
5.3 资产配置饼图
class AssetAllocationChart extends CustomPainter {
void paint(Canvas canvas, Size size) {
final allocations = [
('现金', 0.3, Colors.green),
('基金', 0.4, Colors.blue),
('股票', 0.2, Colors.purple),
('其他', 0.1, Colors.orange),
];
_drawPieChart(canvas, size, allocations);
_drawLegend(canvas, size, allocations);
}
}
六、家庭财务管理
6.1 家庭成员管理
enum FamilyRole {
owner('户主', '👑', Color(0xFFFFD700)),
spouse('配偶', '💑', Color(0xFFE91E63)),
child('子女', '👶', Color(0xFF00BCD4)),
parent('父母', '👴', Color(0xFF9C27B0)),
other('其他', '👤', Color(0xFF607D8B));
}
6.2 共享账本功能
6.3 权限管理
| 角色 | 记账权限 | 查看权限 | 管理权限 |
|---|---|---|---|
| 户主 | ✅ 全部 | ✅ 全部 | ✅ 全部 |
| 配偶 | ✅ 全部 | ✅ 全部 | ❌ 无 |
| 子女 | ✅ 个人 | ✅ 个人 | ❌ 无 |
| 父母 | ✅ 个人 | ✅ 全部 | ❌ 无 |
七、目标管理功能
7.1 储蓄目标
class SavingsGoal {
final String id;
final String name;
final double targetAmount;
final double currentAmount;
final DateTime deadline;
final GoalPriority priority;
final GoalStatus status;
double get progress => currentAmount / targetAmount;
int get remainingDays => deadline.difference(DateTime.now()).inDays;
double get dailySavingsNeeded =>
(targetAmount - currentAmount) / remainingDays.clamp(1, double.infinity);
}
7.2 目标优先级
| 优先级 | 图标 | 描述 | 建议占比 |
|---|---|---|---|
| 紧急 | 🔴 | 应急储备、债务偿还 | 30% |
| 重要 | 🟡 | 教育、医疗储备 | 40% |
| 一般 | 🟢 | 旅行、大件购买 | 20% |
| 梦想 | 🔵 | 财务自由、提前退休 | 10% |
7.3 目标进度追踪
八、智能提醒功能
8.1 提醒类型
| 提醒类型 | 触发条件 | 提醒内容 |
|---|---|---|
| 预算预警 | 支出达80% | 该分类预算即将用完 |
| 账单提醒 | 固定日期 | 信用卡/房贷还款日 |
| 目标提醒 | 定期存入 | 本周储蓄目标未完成 |
| 异常提醒 | 大额支出 | 检测到异常消费 |
| 周报提醒 | 每周一次 | 本周财务总结 |
8.2 提醒设置
class ReminderSetting {
final ReminderType type;
final bool enabled;
final int threshold;
final List<int> notifyDays;
final TimeOfDay notifyTime;
}
九、数据安全
9.1 安全措施
9.2 隐私保护
- 所有数据本地存储,不上传敏感信息
- 支持数据脱敏导出
- 可设置应用访问密码
- 支持指纹/面容解锁
十、技术实现细节
10.1 状态管理
class FinancialState extends ChangeNotifier {
List<Transaction> _transactions = [];
List<Budget> _budgets = [];
List<SavingsGoal> _goals = [];
List<FinancialAdvice> _advice = [];
double _totalIncome = 0;
double _totalExpense = 0;
double _totalAssets = 0;
void addTransaction(Transaction txn) {
_transactions.insert(0, txn);
_recalculate();
notifyListeners();
}
void _recalculate() {
_totalIncome = _transactions
.where((t) => t.type == TransactionType.income)
.fold(0, (sum, t) => sum + t.amount);
_totalExpense = _transactions
.where((t) => t.type == TransactionType.expense)
.fold(0, (sum, t) => sum + t.amount);
_totalAssets = _totalIncome - _totalExpense;
_generateAdvice();
}
}
10.2 数据持久化
class FinancialDataService {
static const String _transactionsKey = 'transactions';
static const String _budgetsKey = 'budgets';
static const String _goalsKey = 'goals';
Future<void> saveTransactions(List<Transaction> transactions) async {
final jsonList = transactions.map((t) => t.toJson()).toList();
await _storage.write(_transactionsKey, jsonEncode(jsonList));
}
Future<List<Transaction>> loadTransactions() async {
final jsonString = await _storage.read(_transactionsKey);
if (jsonString == null) return [];
final jsonList = jsonDecode(jsonString) as List;
return jsonList.map((j) => Transaction.fromJson(j)).toList();
}
}
十一、应用截图示意
11.1 首页仪表盘
┌─────────────────────────────────────┐
│ 家庭财务规划 👤 ⚙️ │
├─────────────────────────────────────┤
│ ┌─────────────────────────────┐ │
│ │ 💰 总资产 │ │
│ │ ¥ 128,500.00 │ │
│ │ ↑ +3.2% 本月 │ │
│ └─────────────────────────────┘ │
│ │
│ 本月收支 │
│ ┌──────────┐ ┌──────────┐ │
│ │ 收入 │ │ 支出 │ │
│ │ ¥15,000 │ │ ¥8,500 │ │
│ └──────────┘ └──────────┘ │
│ │
│ 预算进度 查看全部 │
│ 生活 ████████░░ 80% │
│ 餐饮 ██████░░░░ 60% │
│ │
│ 最近交易 │
│ 🍜 午餐 -¥35 今天 │
│ 🚗 加油 -¥300 昨天 │
│ 💰 工资 +¥15,000 3天前 │
└─────────────────────────────────────┘
│ 📊记录 📈分析 💡建议 🎯目标 │
└─────────────────────────────────────┘
11.2 记账页面
┌─────────────────────────────────────┐
│ ← 添加记录 │
├─────────────────────────────────────┤
│ ┌─────────┐ ┌─────────┐ │
│ │ 支出 │ │ 收入 │ │
│ └─────────┘ └─────────┘ │
│ │
│ ¥ 0.00 │
│ ───────────────────────────────── │
│ │
│ 选择分类 │
│ 🏠生活 🍜餐饮 🚗交通 🛒购物 │
│ 🎮娱乐 🏥医疗 📚教育 📦其他 │
│ │
│ 备注 │
│ ┌─────────────────────────────┐ │
│ │ 输入备注信息... │ │
│ └─────────────────────────────┘ │
│ │
│ 日期 成员 │
│ 2024-01-15 👤 我 │
│ │
│ ┌─────────────────────────────┐ │
│ │ 保 存 │ │
│ └─────────────────────────────┘ │
└─────────────────────────────────────┘
十二、后续规划
12.1 功能迭代
| 版本 | 功能 | 状态 |
|---|---|---|
| v1.0 | 基础记账、统计分析 | ✅ 已完成 |
| v1.1 | 预算管理、目标追踪 | 🚧 开发中 |
| v1.2 | 家庭共享、多账本 | 📋 计划中 |
| v1.3 | 智能建议、AI分析 | 📋 计划中 |
| v2.0 | 投资管理、资产配置 | 📋 计划中 |
12.2 技术优化
- 数据云端同步
- 多设备支持
- 数据导入导出
- 智能分类识别
- 语音记账功能
让理财变得简单,让生活更有规划
更多推荐




所有评论(0)