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),
],
),
],
),
),
);
}
}