diff --git a/lib/Pages/Dashboard/recent_transactions_list.dart b/lib/Pages/Dashboard/recent_transactions_list.dart index f8865d3..c01b2d9 100644 --- a/lib/Pages/Dashboard/recent_transactions_list.dart +++ b/lib/Pages/Dashboard/recent_transactions_list.dart @@ -51,7 +51,7 @@ class _RecentTransactionsListState extends State { final ThemeData theme = Theme.of(context); if (snapshot.hasData) { - final List? recentTransactionsWidgetList = snapshot.data + final List? recentTransactionsWidgetList = snapshot.data ?.map( (final Transaction transaction) => Padding( padding: const EdgeInsets.symmetric(vertical: 4), @@ -74,7 +74,42 @@ class _RecentTransactionsListState extends State { ) .toList(); - return Column(children: [...?recentTransactionsWidgetList]); + if (recentTransactionsWidgetList != null && + recentTransactionsWidgetList.isNotEmpty) { + recentTransactionsWidgetList.add( + Padding( + padding: const EdgeInsets.symmetric(vertical: 4), + child: TextButton( + onPressed: _transactionController.newTransactionHandler, + child: const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.swap_horiz), + SizedBox(width: 10), + Text('Transaktion hinzufügen'), + ], + ), + ), + ), + ); + return Column(children: [...recentTransactionsWidgetList]); + } else { + if (_accountController.selected.value != null) { + return TextButton( + onPressed: _transactionController.newTransactionHandler, + child: const Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Icon(Icons.swap_horiz), + SizedBox(width: 10), + Text('Transaktion hinzufügen'), + ], + ), + ); + } else { + return const Text(''); + } + } } else if (snapshot.hasError) { return Center( child: Column( diff --git a/lib/Pages/Misc/floating_creation_button.dart b/lib/Pages/Misc/floating_creation_button.dart index 55b9d8e..5fd2c3b 100644 --- a/lib/Pages/Misc/floating_creation_button.dart +++ b/lib/Pages/Misc/floating_creation_button.dart @@ -24,33 +24,57 @@ class _FloatingCreationButtonState extends State { final _key = GlobalKey(); @override - Widget build(final BuildContext context) => ExpandableFab( - key: _key, - openButtonBuilder: RotateFloatingActionButtonBuilder( - child: const Icon(Icons.add), - ), - type: ExpandableFabType.up, - childrenAnimation: ExpandableFabAnimation.none, - distance: 70, - children: [ + void initState() { + super.initState(); + + _accountController.selected.addListener(() { + if (mounted) { + setState(() {}); + } + }); + } + + @override + Widget build(final BuildContext context) { + final List fabs = []; + if (_accountController.selected.value != null) { + fabs + ..add( + _expandableButton( + label: 'Neue Transaktion', + icon: Icons.swap_horiz, + onPressed: _transactionController.newTransactionHandler, + ), + ) + ..add( + _expandableButton( + label: 'Neue wiederkehrende Transaktion', + icon: Icons.repeat, + onPressed: + _recurringTransactionController.newRecurringTransactionHandler, + ), + ); + } + + fabs.add( _expandableButton( label: 'Neues Konto', icon: Icons.account_balance_wallet, onPressed: _accountController.newAccountHandler, ), - _expandableButton( - label: 'Neue Transaktion', - icon: Icons.swap_horiz, - onPressed: _transactionController.newTransactionHandler, + ); + + return ExpandableFab( + key: _key, + openButtonBuilder: RotateFloatingActionButtonBuilder( + child: const Icon(Icons.add), ), - _expandableButton( - label: 'Neue wiederkehrende Transaktion', - icon: Icons.repeat, - onPressed: - _recurringTransactionController.newRecurringTransactionHandler, - ), - ], - ); + type: ExpandableFabType.up, + childrenAnimation: ExpandableFabAnimation.none, + distance: 70, + children: fabs, + ); + } Widget _expandableButton({ required final String label,