Compare commits
	
		
			4 Commits
		
	
	
		
			0.1.1
			...
			fa852faadc
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| fa852faadc | |||
| 6f9d0d8afb | |||
| 75cc72678b | |||
| 2970431b91 | 
| @@ -1,4 +1,6 @@ | ||||
| // Flutter | ||||
| import 'dart:async'; | ||||
|  | ||||
| import 'package:flutter/material.dart'; | ||||
| import '/models/item_type.dart'; | ||||
|  | ||||
| @@ -13,11 +15,11 @@ import '/models/tracked_item.dart'; | ||||
| ///   - Fix bug where editing an item does not reflect immediately when returning to Reports page. | ||||
| ///     - Currently reflects after going back to Reports the 2nd time. | ||||
|  | ||||
| double _assetTotal = 0, | ||||
|     _expenseMonthly = 0, | ||||
|     _expenseYearly = 0, | ||||
|     _incomeMonthly = 0, | ||||
|     _incomeYearly = 0; | ||||
| double _assetTotal = -1, | ||||
|     _expenseMonthly = -1, | ||||
|     _expenseYearly = -1, | ||||
|     _incomeMonthly = -1, | ||||
|     _incomeYearly = -1; | ||||
|  | ||||
| class ProjectionPage extends StatefulWidget { | ||||
|   const ProjectionPage({ | ||||
| @@ -29,6 +31,18 @@ class ProjectionPage extends StatefulWidget { | ||||
| } | ||||
|  | ||||
| class _ProjectionPageState extends State<ProjectionPage> { | ||||
|   bool _showProjections = true; | ||||
|  | ||||
|   @override | ||||
|   void dispose() { | ||||
|     _assetTotal = -2; | ||||
|     _expenseMonthly = -2; | ||||
|     _expenseYearly = -2; | ||||
|     _incomeMonthly = -2; | ||||
|     _incomeYearly = -2; | ||||
|     super.dispose(); | ||||
|   } | ||||
|  | ||||
|   @override | ||||
|   Widget build(BuildContext context) { | ||||
|     // Summaries for display as well as calculation of totals for projections. | ||||
| @@ -46,6 +60,26 @@ class _ProjectionPageState extends State<ProjectionPage> { | ||||
|     ); | ||||
|  | ||||
|     // Calculations for the projections. | ||||
|     Widget projections; | ||||
|     if (_assetTotal < 0 || | ||||
|         _incomeMonthly < 0 || | ||||
|         _incomeYearly < 0 || | ||||
|         _expenseMonthly < 0 || | ||||
|         _expenseYearly < 0) { | ||||
|       _showProjections = false; | ||||
|  | ||||
|       projections = Center( | ||||
|         child: SizedBox( | ||||
|           child: CircularProgressIndicator(), | ||||
|         ), | ||||
|       ); | ||||
|  | ||||
|       Future.delayed(Duration(seconds: 1), () { | ||||
|         setState(() { | ||||
|           _showProjections = true; | ||||
|         }); | ||||
|       }); | ||||
|     } else { | ||||
|       double oneMonth = _assetTotal + _incomeMonthly - _expenseMonthly, | ||||
|           threeMonths = _assetTotal + (3 * (_incomeMonthly - _expenseMonthly)), | ||||
|           sixMonths = _assetTotal + (6 * (_incomeMonthly - _expenseMonthly)), | ||||
| @@ -91,6 +125,18 @@ class _ProjectionPageState extends State<ProjectionPage> { | ||||
|         rightText: "", | ||||
|       ); | ||||
|  | ||||
|       projections = Column( | ||||
|         children: [ | ||||
|           proj1, | ||||
|           proj2, | ||||
|           proj3, | ||||
|           proj4, | ||||
|           proj5, | ||||
|           proj6, | ||||
|         ], | ||||
|       ); | ||||
|     } | ||||
|  | ||||
|     // Return all of the UI elements. | ||||
|     return ListView( | ||||
|       children: [ | ||||
| @@ -99,12 +145,7 @@ class _ProjectionPageState extends State<ProjectionPage> { | ||||
|         incomeSummary, | ||||
|         assetSummary, | ||||
|         TitleCard(title: "Projections"), | ||||
|         proj1, | ||||
|         proj2, | ||||
|         proj3, | ||||
|         proj4, | ||||
|         proj5, | ||||
|         proj6, | ||||
|         projections, | ||||
|       ], | ||||
|     ); | ||||
|   } | ||||
|   | ||||
| @@ -337,6 +337,7 @@ class _TrackedItemInputDialogState extends State<TrackedItemInputDialog> { | ||||
|                 : Text("Edit ${_type!.title}"), | ||||
|           ), | ||||
|           content: FutureBuilder<List<Expense>>( | ||||
|               // TODO / TBD -- This should no longer only be Expenses. | ||||
|               future: DatabaseHelper.instance.getExpenses(), | ||||
|               builder: (BuildContext context, | ||||
|                   AsyncSnapshot<List<Expense>> snapshot) { | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| name: expense_tracker | ||||
| description: Track recurring expenses against income and liquid assets. | ||||
| publish_to: 'none' | ||||
| version: 0.1.1 | ||||
| version: 0.1.2 | ||||
|  | ||||
| environment: | ||||
|   sdk: ^3.6.1 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user