Start creating the reports as a break from making the Expense page usable for all 3. Still considering whether to just have 1 main abstract class with a nully Frequency.
This commit is contained in:
parent
d35c250913
commit
0b4937b141
@ -1,5 +1,12 @@
|
||||
// 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)
|
||||
@ -8,13 +15,97 @@ import 'package:flutter/material.dart';
|
||||
/// - 1 week, 1 month, 1 quarter, 1 year
|
||||
/// - 1/2 year? 2 years? 5 years? Allow customization?
|
||||
|
||||
class ProjectionPage extends StatelessWidget {
|
||||
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 Placeholder();
|
||||
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),
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user