diff --git a/lib/pages/tracked_item.dart b/lib/pages/tracked_item.dart index fd83bf6..7b22af1 100644 --- a/lib/pages/tracked_item.dart +++ b/lib/pages/tracked_item.dart @@ -297,6 +297,21 @@ class _TrackedItemInputDialogState extends State { String amountText = widget.amountText != null ? widget.amountText! : TrackedItem.amountText; + Future> items; + switch (_type) { + case ItemType.expense: + items = DatabaseHelper.instance.getExpenses(); + break; + case ItemType.income: + items = DatabaseHelper.instance.getIncomes(); + break; + case ItemType.asset: + items = DatabaseHelper.instance.getAssets(); + break; + default: + throw UnimplementedError("Cannot find unimplemented type."); + } + return Column( // prevent AlertDialog from taking full vertical height. mainAxisSize: MainAxisSize.min, @@ -336,15 +351,15 @@ class _TrackedItemInputDialogState extends State { ? Text("New ${_type!.title}") : Text("Edit ${_type!.title}"), ), - content: FutureBuilder>( + content: FutureBuilder>( // TODO / TBD -- This should no longer only be Expenses. - future: DatabaseHelper.instance.getExpenses(), + future: items, builder: (BuildContext context, - AsyncSnapshot> snapshot) { + AsyncSnapshot> snapshot) { if (!snapshot.hasData) { return Center(child: Text('Loading...')); } - List expenses = snapshot.data!; + List expenses = snapshot.data!; return Form( key: _formKey, child: Column( @@ -392,7 +407,16 @@ class _TrackedItemInputDialogState extends State { return "$amountText must be a valid number."; } if (double.parse(value) < 0) { - return "Please use the Income page rather than having negative expenses."; + switch (_type) { + case ItemType.expense: + return "Please use the Income page."; + + case ItemType.income: + return "Please use the Expense page."; + + default: + break; + } } if (double.parse(value) < 0.01) { return "$amountText must be one hundreth (0.01) or higher.";