diff --git a/Frontend-user/lib/basket.dart b/Frontend-user/lib/basket.dart index 0b48d0a..28e3088 100644 --- a/Frontend-user/lib/basket.dart +++ b/Frontend-user/lib/basket.dart @@ -8,17 +8,20 @@ import 'sample_data.dart'; */ class ShowBasket extends StatelessWidget { - final Transaction transaction; + final int index; final bool editable; - - const ShowBasket( - {super.key, required this.transaction, this.editable = false}); + const ShowBasket(this.index, {this.editable = false, super.key}); @override Widget build(BuildContext context) { - return Column(children: [ - Card( - child: ListTile( + final List basket = SampleData().transactions[index].basket!; + return Column( + children: [ + Expanded( + child: getBasket(basket), + ), + const Divider(), + ListTile( leading: const Icon( Icons.euro, ), @@ -26,27 +29,50 @@ class ShowBasket extends StatelessWidget { 'Kosten:', ), subtitle: Text( - '${transaction.amount / 100}', - )), - ), - getBasket(transaction.basket!) - ]); + '${SampleData().transactions[index].amount / 100}', + ), + trailing: editable + ? Row( + mainAxisSize: MainAxisSize.min, + children: [ + FloatingActionButton( + backgroundColor: Colors.redAccent.shade100, + child: const Icon(Icons.delete), + onPressed: () {}), + const SizedBox( + width: 10, + ), + FloatingActionButton( + child: const Icon(Icons.shopping_cart_checkout), + onPressed: () {}), + ], + ) + : null), + ], + ); } ListView getBasket(List basket) { return ListView.builder( - shrinkWrap: true, itemCount: null, itemBuilder: (context, index) { if (index < basket.length) { return Card( child: ListTile( - leading: getLeading(basket[index].products.category), - title: Text(basket[index].products.name), - subtitle: Text( - '${basket[index].amount} ${basket[index].products.unit}'), - trailing: editable == true ? getTrailing() : null, - ), + leading: getLeading(basket[index].products.category), + title: Text(basket[index].products.name), + subtitle: Text( + '${basket[index].amount} ${basket[index].products.unit}'), + trailing: editable + ? SizedBox( + width: 100, + child: TextField( + keyboardType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly + ]), + ) + : null), ); } else { return null; @@ -60,7 +86,10 @@ class ShowBasket extends StatelessWidget { case Category.obstUndGemuese: return const Text("🍅"); case Category.brotCerealienUndAufstriche: - return const Text('🍞'); + return const Text( + '🍞', + style: TextStyle(fontSize: 24), + ); case Category.drogerieUndHaushalt: case Category.getraenke: case Category.kochenUndBacken: @@ -71,14 +100,4 @@ class ShowBasket extends StatelessWidget { return const Icon(Icons.error); } } - - Widget getTrailing() { - return TextField( - decoration: const InputDecoration(labelText: "Enter your number"), - keyboardType: TextInputType.number, - inputFormatters: [ - FilteringTextInputFormatter.digitsOnly - ], - ); - } } diff --git a/Frontend-user/lib/finance.dart b/Frontend-user/lib/finance.dart index d32f7a8..33d1f41 100644 --- a/Frontend-user/lib/finance.dart +++ b/Frontend-user/lib/finance.dart @@ -46,40 +46,17 @@ class Finance extends StatelessWidget { leading: getIcon(SampleData().transactions[index].type), title: Text( gettitle(SampleData().transactions[index].type)), - subtitle: getSubtitle(index), - trailing: SampleData().transactions[index].type == - TransaktionArt.einkauf - ? PopupMenuButton( - onSelected: (value) {}, - itemBuilder: (BuildContext context) => - >[ - const PopupMenuItem( - value: 'Option', - child: ListTile( - leading: Icon(Icons.manage_history), - title: Text('Warenkorb bearbeiten')), - ), - const PopupMenuItem( - value: 'Option', - child: ListTile( - leading: - Icon(Icons.remove_shopping_cart), - title: Text('Einkauf stornieren')), - ), - ], - ) - : null, - onTap: () { - if (SampleData().transactions[index].basket != null) { - showBottomSheet( - context: context, - builder: (BuildContext context) { - return ShowBasket( - transaction: - SampleData().transactions[index]); - }); - } - })); + subtitle: getSubtitle(SampleData().transactions[index]), + trailing: getTrailing(context, index), + onTap: (SampleData().transactions[index].basket != null) + ? () { + showBottomSheet( + context: context, + builder: (BuildContext context) { + return ShowBasket(index); + }); + } + : null)); } else { return null; } @@ -95,19 +72,19 @@ class Finance extends StatelessWidget { case TransaktionArt.korrektur: return 'Korrektur'; case TransaktionArt.monatlBeitrag: - return 'monatlicher Beitrag'; + return 'Monatlicher Beitrag'; default: return 'Ein Error ist aufgetreten'; } } - Text getSubtitle(int index) { - String text = '${SampleData().transactions[index].amount / 100}'; + Text getSubtitle(Transaction transaction) { + String text = '${transaction.amount / 100}'; text += '€ '; text += DateFormat("EEEE, dd. MMMM yyyy HH:mm", 'de_DE') - .format(SampleData().transactions[index].date); - if (SampleData().transactions[index].description != null) { - (text += '\n${SampleData().transactions[index].description}'); + .format(transaction.date); + if (transaction.description != null) { + (text += '\n${transaction.description}'); } return Text(text); @@ -125,4 +102,36 @@ class Finance extends StatelessWidget { return const Icon(Icons.priority_high); } } + + getTrailing(BuildContext context, int index) { + if (SampleData().transactions[index].type == TransaktionArt.einkauf) { + return PopupMenuButton( + onSelected: (value) { + if (value == 'edit') { + showBottomSheet( + context: context, + builder: (BuildContext context) { + return ShowBasket(index, editable: true); + }); + } + }, + itemBuilder: (BuildContext context) => >[ + const PopupMenuItem( + value: 'edit', + child: ListTile( + leading: Icon(Icons.manage_history), + title: Text('Warenkorb bearbeiten')), + ), + const PopupMenuItem( + value: 'delete', + child: ListTile( + leading: Icon(Icons.remove_shopping_cart), + title: Text('Einkauf stornieren')), + ), + ], + ); + } else { + return null; + } + } } diff --git a/Frontend-user/lib/sample_data.dart b/Frontend-user/lib/sample_data.dart index d41c66d..be1f138 100644 --- a/Frontend-user/lib/sample_data.dart +++ b/Frontend-user/lib/sample_data.dart @@ -59,6 +59,13 @@ class SampleData { ]; static List basket = [ + Basket(products[0], 20), + Basket(products[1], 2200), + Basket(products[2], 2), + Basket(products[3], 1), + Basket(products[4], 1), + Basket(products[5], 2), + Basket(products[6], 222), Basket(products[0], 20), Basket(products[1], 2200), Basket(products[2], 2),