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