From 9451187c97b2503d7363af292698df01dc37a1ac Mon Sep 17 00:00:00 2001 From: Mikkel Troels Kongsted Date: Tue, 4 Feb 2025 12:24:53 +0100 Subject: [PATCH] show total price in receipts --- mobile/lib/pages/finish_shopping_page.dart | 2 +- mobile/lib/pages/receipt_page.dart | 74 +++++++++++++++------- 2 files changed, 51 insertions(+), 25 deletions(-) diff --git a/mobile/lib/pages/finish_shopping_page.dart b/mobile/lib/pages/finish_shopping_page.dart index 4ce9429..9466bd4 100644 --- a/mobile/lib/pages/finish_shopping_page.dart +++ b/mobile/lib/pages/finish_shopping_page.dart @@ -54,10 +54,10 @@ class FinishShoppingPage extends StatelessWidget { onPressed: () async { payingStateRepo.next(); receiptRepo.createReceipt(cart); - cartRepo.clearCart(); await Future.delayed(const Duration(seconds: 1)); payingStateRepo.next(); await Future.delayed(const Duration(seconds: 1)); + cartRepo.clearCart(); payingStateRepo.reset(); if (context.mounted) Navigator.pop(context); }, diff --git a/mobile/lib/pages/receipt_page.dart b/mobile/lib/pages/receipt_page.dart index 82f7914..02bcb49 100644 --- a/mobile/lib/pages/receipt_page.dart +++ b/mobile/lib/pages/receipt_page.dart @@ -2,6 +2,55 @@ import 'package:flutter/material.dart'; import 'package:mobile/repos/receipt.dart'; import 'package:mobile/widgets/receipt_item.dart'; +class ReceiptView extends StatelessWidget { + final Receipt receipt; + const ReceiptView({super.key, required this.receipt}); + + @override + Widget build(BuildContext context) { + final receiptItems = receipt.allReceiptItems(); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const BackButton(), + Expanded( + child: Container( + margin: const EdgeInsets.all(20), + child: Column( + children: [ + Text(receipt.dateFormatted()), + Expanded( + child: Column( + children: [ + ListView.builder( + shrinkWrap: true, + itemBuilder: (_, idx) => ReceiptItemView( + pricePerAmount: receiptItems[idx].product.price, + name: receiptItems[idx].product.name, + amount: receiptItems[idx].amount), + itemCount: receiptItems.length), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const Text( + "Total:", + style: TextStyle(fontWeight: FontWeight.bold), + ), + Text("${receipt.totalPrice()} kr"), + ], + ), + ], + )), + ], + ), + ), + ), + ], + ); + } +} + class ReceiptPage extends StatelessWidget { final Receipt receipt; @@ -9,29 +58,6 @@ class ReceiptPage extends StatelessWidget { @override Widget build(BuildContext context) { - final receiptItems = receipt.allReceiptItems(); - - return Scaffold( - body: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const BackButton(), - Container( - margin: const EdgeInsets.symmetric(horizontal: 10), - child: Text(receipt.dateFormatted())), - Container( - margin: const EdgeInsets.symmetric(horizontal: 10), - child: Expanded( - child: ListView.builder( - shrinkWrap: true, - itemBuilder: (_, idx) => ReceiptItemView( - pricePerAmount: receiptItems[idx].product.price, - name: receiptItems[idx].product.name, - amount: receiptItems[idx].amount), - itemCount: receiptItems.length)), - ), - ], - ), - ); + return Scaffold(body: ReceiptView(receipt: receipt)); } }