Add the expense totals! Yay! Still trying to center the totals part with the monthly part across all sections properly.
This commit is contained in:
parent
0b4937b141
commit
58102bab02
@ -6,6 +6,7 @@ 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';
|
||||
import 'package:flutter_expense_tracker/models/tracked_type_recurring.dart';
|
||||
|
||||
/// TODO:
|
||||
/// - Expenses (total number, totals by day / month / year)
|
||||
@ -25,34 +26,16 @@ class ProjectionPage extends StatefulWidget {
|
||||
}
|
||||
|
||||
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) {
|
||||
Widget expenseSummary = SummaryCardForTotals(
|
||||
list: DatabaseHelper.instance.getExpenses(),
|
||||
summaryTypeLabel: "Expense",
|
||||
);
|
||||
|
||||
return ListView(
|
||||
children: [
|
||||
SummaryCard(
|
||||
name: "Expense Totals",
|
||||
leftText: "left",
|
||||
middleText: "middle",
|
||||
rightText: "right",
|
||||
),
|
||||
expenseSummary,
|
||||
SummaryCard(
|
||||
name: "Income Totals",
|
||||
leftText: "left",
|
||||
@ -70,6 +53,43 @@ class _ProjectionPageState extends State<ProjectionPage> {
|
||||
}
|
||||
}
|
||||
|
||||
class SummaryCardForTotals extends StatelessWidget {
|
||||
const SummaryCardForTotals({
|
||||
super.key,
|
||||
required this.list,
|
||||
required this.summaryTypeLabel,
|
||||
});
|
||||
|
||||
final Future<List<RecurringTrackedType>> list;
|
||||
final String summaryTypeLabel;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return FutureBuilder<List<RecurringTrackedType>>(
|
||||
future: list,
|
||||
builder: (
|
||||
BuildContext context,
|
||||
AsyncSnapshot<List<RecurringTrackedType>> snapshot,
|
||||
) {
|
||||
if (!snapshot.hasData) {
|
||||
return Text('Loading $summaryTypeLabel Section...');
|
||||
}
|
||||
double dailyTotal = 0, monthlyTotal = 0, yearlyTotal = 0;
|
||||
for (RecurringTrackedType e in snapshot.data!) {
|
||||
dailyTotal += e.calcComparableAmountDaily();
|
||||
monthlyTotal += e.calcComparableAmountYearly() / 12;
|
||||
yearlyTotal += e.calcComparableAmountYearly();
|
||||
}
|
||||
return SummaryCard(
|
||||
name: "$summaryTypeLabel Totals",
|
||||
leftText: "${dailyTotal.toStringAsFixed(2)} Daily",
|
||||
middleText: "${monthlyTotal.toStringAsFixed(2)} Monthly",
|
||||
rightText: "${yearlyTotal.toStringAsFixed(2)} Yearly",
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
class SummaryCard extends StatelessWidget {
|
||||
const SummaryCard({
|
||||
super.key,
|
||||
@ -91,14 +111,18 @@ class SummaryCard extends StatelessWidget {
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Column(
|
||||
children: [
|
||||
Center(
|
||||
child: Text(name),
|
||||
),
|
||||
Row(
|
||||
children: [
|
||||
Text(leftText),
|
||||
Spacer(),
|
||||
Text(middleText),
|
||||
Center(
|
||||
child: Column(
|
||||
children: [
|
||||
Text(name),
|
||||
Text(middleText),
|
||||
],
|
||||
),
|
||||
),
|
||||
Spacer(),
|
||||
Text(rightText),
|
||||
],
|
||||
|
Loading…
x
Reference in New Issue
Block a user