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';
|
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:
|
/// TODO:
|
||||||
/// - Expenses (total number, totals by day / month / year)
|
/// - Expenses (total number, totals by day / month / year)
|
||||||
/// - Incomes (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 week, 1 month, 1 quarter, 1 year
|
||||||
/// - 1/2 year? 2 years? 5 years? Allow customization?
|
/// - 1/2 year? 2 years? 5 years? Allow customization?
|
||||||
|
|
||||||
class ProjectionPage extends StatelessWidget {
|
class ProjectionPage extends StatefulWidget {
|
||||||
const ProjectionPage({
|
const ProjectionPage({
|
||||||
super.key,
|
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
|
@override
|
||||||
Widget build(BuildContext context) {
|
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