From 6e3329b9f49a83a38a97d81ce2f867a7095c692b Mon Sep 17 00:00:00 2001 From: "Alexander \"PapaTutuWawa" Date: Sun, 4 May 2025 23:36:17 +0200 Subject: [PATCH] Always show the add button for budgets --- lib/ui/pages/budgets/budgets.dart | 138 ++++++++++++++++-------------- 1 file changed, 74 insertions(+), 64 deletions(-) diff --git a/lib/ui/pages/budgets/budgets.dart b/lib/ui/pages/budgets/budgets.dart index c76931a..0f4b4ad 100644 --- a/lib/ui/pages/budgets/budgets.dart +++ b/lib/ui/pages/budgets/budgets.dart @@ -12,73 +12,83 @@ class BudgetListPage extends StatelessWidget { @override Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, state) { - if (state.budgets.isEmpty) { - return Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text("No budgets"), - OutlinedButton( - onPressed: () { - showDialogOrModal( - context: context, - builder: - (_) => AddBudgetPopup( - onDone: () { - Navigator.of(context).pop(); + return Stack( + children: [ + BlocBuilder( + builder: (context, state) { + if (state.budgets.isEmpty) { + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text("No budgets"), + ], + ); + } + + return ListView.builder( + itemCount: state.budgets.length, + itemBuilder: + (context, index) => ListTile( + title: Text(state.budgets[index].name), + selected: state.budgets[index] == state.activeBudget, + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton( + icon: Icon(Icons.edit), + onPressed: () { + showDialogOrModal( + context: context, + builder: + (_) => EditBudgetPopup( + budget: state.activeBudget!, + onDone: () { + Navigator.of(context).pop(); + }, + ), + ); }, ), - ); - }, - child: Text("Add"), - ), - ], - ); - } + IconButton( + icon: Icon(Icons.delete, color: Colors.redAccent), + onPressed: () { + // TODO + }, + ), + ], + ), + onTap: () { + GetIt.I.get().setActiveBudget( + state.budgets[index], + ); + if (getScreenSize(context) == ScreenSize.small) { + Navigator.of(context).pushNamed("/budgets/details"); + } + }, + ), + ); + }, + ), - return ListView.builder( - itemCount: state.budgets.length, - itemBuilder: - (context, index) => ListTile( - title: Text(state.budgets[index].name), - selected: state.budgets[index] == state.activeBudget, - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - IconButton( - icon: Icon(Icons.edit), - onPressed: () { - showDialogOrModal( - context: context, - builder: (_) => EditBudgetPopup( - budget: state.activeBudget!, - onDone: () { - Navigator.of(context).pop(); - }, - ), - ); - }, - ), - IconButton( - icon: Icon(Icons.delete, color: Colors.redAccent), - onPressed: () { - // TODO - }, - ), - ], - ), - onTap: () { - GetIt.I.get().setActiveBudget( - state.budgets[index], - ); - if (getScreenSize(context) == ScreenSize.small) { - Navigator.of(context).pushNamed("/budgets/details"); - } - }, - ), - ); - }, + Positioned( + right: 16, + bottom: 16, + child: FloatingActionButton( + child: Icon(Icons.add), + onPressed: () { + showDialogOrModal( + context: context, + builder: + (_) => AddBudgetPopup( + onDone: () { + Navigator.of(context).pop(); + }, + ), + ); + }, + ), + ), + ], ); } }