112 lines
2.6 KiB
Dart
112 lines
2.6 KiB
Dart
// Flutter
|
|
import 'package:flutter/material.dart';
|
|
|
|
// Local
|
|
import 'package:flutter_expense_tracker/db.dart';
|
|
import 'package:flutter_expense_tracker/models/asset.dart';
|
|
import 'package:flutter_expense_tracker/models/expense.dart';
|
|
import 'package:flutter_expense_tracker/models/income.dart';
|
|
|
|
/// TODO:
|
|
/// - Expenses (total number, totals by day / month / year)
|
|
/// - Incomes (total number, totals by day / month / year)
|
|
/// - Assets (total number, total by day / month / year)
|
|
/// - Projected Assets in:
|
|
/// - 1 week, 1 month, 1 quarter, 1 year
|
|
/// - 1/2 year? 2 years? 5 years? Allow customization?
|
|
|
|
class ProjectionPage extends StatefulWidget {
|
|
const ProjectionPage({
|
|
super.key,
|
|
});
|
|
|
|
@override
|
|
State<ProjectionPage> createState() => _ProjectionPageState();
|
|
}
|
|
|
|
class _ProjectionPageState extends State<ProjectionPage> {
|
|
late Future<List<Expense>> expenses;
|
|
late Future<List<Income>> incomes;
|
|
late Future<List<Asset>> assets;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
/***** Load DB Data *****/
|
|
// Expenses
|
|
expenses = DatabaseHelper.instance.getExpenses();
|
|
|
|
// Income
|
|
//incomes = DatabaseHelper.instance.getIncomes();
|
|
|
|
// Assets
|
|
//assets = DatabaseHelper.instance.getAssets();
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return ListView(
|
|
children: [
|
|
SummaryCard(
|
|
name: "Expense Totals",
|
|
leftText: "left",
|
|
middleText: "middle",
|
|
rightText: "right",
|
|
),
|
|
SummaryCard(
|
|
name: "Income Totals",
|
|
leftText: "left",
|
|
middleText: "middle",
|
|
rightText: "right",
|
|
),
|
|
SummaryCard(
|
|
name: "Asset Totals",
|
|
leftText: "left",
|
|
middleText: "middle",
|
|
rightText: "right",
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|
|
|
|
class SummaryCard extends StatelessWidget {
|
|
const SummaryCard({
|
|
super.key,
|
|
required this.name,
|
|
required this.leftText,
|
|
required this.middleText,
|
|
required this.rightText,
|
|
});
|
|
|
|
final String name;
|
|
final String leftText;
|
|
final String middleText;
|
|
final String rightText;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Card(
|
|
child: Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Column(
|
|
children: [
|
|
Center(
|
|
child: Text(name),
|
|
),
|
|
Row(
|
|
children: [
|
|
Text(leftText),
|
|
Spacer(),
|
|
Text(middleText),
|
|
Spacer(),
|
|
Text(rightText),
|
|
],
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|