From daf4450f7abc2cb328474e786fb6d80f1d3ad9b6 Mon Sep 17 00:00:00 2001 From: Vus Khoza Date: Thu, 24 Jul 2025 23:53:06 +0200 Subject: [PATCH] improving ui elements --- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4492 -> 4257 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 2563 -> 2430 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 7118 -> 6529 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 12536 -> 11579 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 18880 -> 17475 bytes lib/models/pageable_model.dart | 119 +++ lib/screens/confirm/confirm_screen.dart | 356 ++++--- lib/screens/history/history_controller.dart | 22 +- lib/screens/history/history_screen.dart | 43 +- lib/screens/home/home_controller.dart | 12 +- lib/screens/home/home_screen.dart | 35 +- lib/screens/pay/pay_controller.dart | 2 +- lib/screens/receipt/receipt_screen.dart | 945 ++++++++++-------- 13 files changed, 904 insertions(+), 630 deletions(-) create mode 100644 lib/models/pageable_model.dart diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png index 75f520d8384e8a23838d1cd6dc48dc86f0036e41..d06ffdff068f341bf2623e8fac90090ff38d9b5c 100644 GIT binary patch delta 4249 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 delta 4485 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 Xb)huP7eIbY00000NkvXXu0mjfwWzqF diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png index 935e40992181a511b51b213896cad266a91a0cd7..48ea1fe046ebc42b1d6de689a0a875a67b95fef8 100644 GIT binary patch delta 2406 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 diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png index ae86a4a21887dda07b0c9108cb6585238325a89e..5509de87c341f95de82e20fcd9f1930b3bd3a10e 100644 GIT binary patch literal 11579 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 X#b;2xG-dtUh6X6gs>;+!nTP)$cch!t literal 12536 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%0D9z%>%*5if+j=E zq&goXESUi>H_`)X*XHpcZyCmksOy=!OfOhbe>U`fgCa8WYW^iOTHT-PHTLZ zYQ*OpE&9ZCJoLxPkevP|h@bV(G*PeX%P%1d#bhylxUu|VVHm1Xv7C|lZm>R=vy*On zJay-rm^BcTs!y-g1il;cCC#1lGv!X=H++>yT?4U}o*bfD^Gc4NnHh@^(T$6rCeEK< z-ZhNxIsL)SwHrM5xHLFFySdP*sM#ydsYW$AoF?A{aeZ9%ZW?b%HxSsr!-4cskngN; z^ca-x6I63X#P)B`on(P^>(~&kw&lz?LN)xab2=pYP@mZYwV7h)^Lv>Yzx@yZ{=8mV z=gd)hBdc!mp^r3f9@cc2BIZQqPqPz|*<@7A%w<*fDo?xmt@;DVd=Sph_{Is@t=gM- z7Hg_uyQ=PEhz_|1mJ!yAt=%rae`r(aXCJdGcf+F)A5I z%j5>M6`l-Pl&~H)^+oE3YFzMLPkqWz=+`;4V`F~0EaD%c-87|~P;*+IB}RL1A_$k( zLCmk+UxsK@lxITjq{t0_&K^^Scg39emwh$tmf>07tb=PNJ zgiz9#ZODl}1eE5`byTOE0!pi?R;GrW0CQ8=8;fHufVoA?bMxJQwdCfAm#6!@fD`NR zhx+S(RrhSa9`7BA0r!n!ugmWL-2OjwzxD|iiePUiBCbSO2i=Wf1{5V ANdN!< diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png index 21c676324d7583007809590d20c4aeb4fa30bd35..e60527677405aa8ccbc24f12a0ee0f61ab663346 100644 GIT binary patch literal 17475 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 Yvgz+;-cA)2;He-Cp00i_>zopr06+}#`~Uy| literal 18880 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 Nz}mw89LdZl`G5J&BP##^ diff --git a/lib/models/pageable_model.dart b/lib/models/pageable_model.dart new file mode 100644 index 0000000..b505ecb --- /dev/null +++ b/lib/models/pageable_model.dart @@ -0,0 +1,119 @@ +class PageableModel { + final List content; + final Pageable pageable; + final int totalPages; + final int totalElements; + final bool last; + final int size; + final int number; + final Sort sort; + final int numberOfElements; + final bool first; + final bool empty; + + PageableModel({ + required this.content, + required this.pageable, + required this.totalPages, + required this.totalElements, + required this.last, + required this.size, + required this.number, + required this.sort, + required this.numberOfElements, + required this.first, + required this.empty, + }); + + factory PageableModel.fromJson(Map json) { + return PageableModel( + content: json['content'] ?? [], + pageable: Pageable.fromJson(json['pageable']), + totalPages: json['totalPages'], + totalElements: json['totalElements'], + last: json['last'], + size: json['size'], + number: json['number'], + sort: Sort.fromJson(json['sort']), + numberOfElements: json['numberOfElements'], + first: json['first'], + empty: json['empty'], + ); + } + + Map toJson() { + return { + 'content': content, + 'pageable': pageable.toJson(), + 'totalPages': totalPages, + 'totalElements': totalElements, + 'last': last, + 'size': size, + 'number': number, + 'sort': sort.toJson(), + 'numberOfElements': numberOfElements, + 'first': first, + 'empty': empty, + }; + } +} + +class Pageable { + final int pageNumber; + final int pageSize; + final Sort sort; + final int offset; + final bool paged; + final bool unpaged; + + Pageable({ + required this.pageNumber, + required this.pageSize, + required this.sort, + required this.offset, + required this.paged, + required this.unpaged, + }); + + factory Pageable.fromJson(Map json) { + return Pageable( + pageNumber: json['pageNumber'], + pageSize: json['pageSize'], + sort: Sort.fromJson(json['sort']), + offset: json['offset'], + paged: json['paged'], + unpaged: json['unpaged'], + ); + } + + Map toJson() { + return { + 'pageNumber': pageNumber, + 'pageSize': pageSize, + 'sort': sort.toJson(), + 'offset': offset, + 'paged': paged, + 'unpaged': unpaged, + }; + } +} + +class Sort { + final bool sorted; + final bool empty; + final bool unsorted; + + Sort({required this.sorted, required this.empty, required this.unsorted}); + + factory Sort.fromJson(Map json) { + return Sort( + sorted: json['sorted'], + empty: json['empty'], + unsorted: json['unsorted'], + ); + } + + Map toJson() { + return {'sorted': sorted, 'empty': empty, 'unsorted': unsorted}; + } +} diff --git a/lib/screens/confirm/confirm_screen.dart b/lib/screens/confirm/confirm_screen.dart index c350e86..270115b 100644 --- a/lib/screens/confirm/confirm_screen.dart +++ b/lib/screens/confirm/confirm_screen.dart @@ -92,179 +92,203 @@ class _ConfirmScreenState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ Container( + padding: EdgeInsets.all(15), decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - width: 1.0, - color: Theme.of(context).colorScheme.primary, + border: Border.all( + color: Theme.of( + context, + ).colorScheme.primary.withOpacity(0.3), + ), + borderRadius: BorderRadius.circular(10), + ), + + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + width: 1.0, + color: + Theme.of(context).colorScheme.primary, + ), + ), + ), + padding: EdgeInsets.only( + bottom: 4.0, + ), // Adjust spacing + child: Text( + "PROVIDER DETAILS", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), ), - ), - ), - padding: EdgeInsets.only( - bottom: 4.0, - ), // Adjust spacing - child: Text( - "PROVIDER DETAILS", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - ), - ...controller - .transactionController - .model - .confirmationData["additionalData"] - .map((data) { - return Column( - children: [ - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceBetween, - children: [ - Text( - data["name"] ?? "", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, + ...controller + .transactionController + .model + .confirmationData["additionalData"] + .map((data) { + return Column( + children: [ + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + data["name"] ?? "", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + data["value"] ?? "", + style: TextStyle(fontSize: 16), + ), + ], ), - ), - Text( - data["value"] ?? "", - style: TextStyle(fontSize: 16), - ), - ], + ], + ); + }) + .toList(), + const SizedBox(height: 30), + Container( + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + width: 1.0, + color: + Theme.of(context).colorScheme.primary, + ), + ), + ), + padding: EdgeInsets.only( + bottom: 4.0, + ), // Adjust spacing + child: Text( + "TRANSACTIONS DETAILS", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Amount", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + controller + .transactionController + .model + .confirmationData["amount"] + .toString(), + style: TextStyle(fontSize: 16), ), ], - ); - }) - .toList(), - const SizedBox(height: 30), - Container( - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - width: 1.0, - color: Theme.of(context).colorScheme.primary, ), - ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Our Charge", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + controller + .transactionController + .model + .confirmationData["charge"] + .toString(), + style: TextStyle(fontSize: 16), + ), + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Gateway Charge", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + controller + .transactionController + .model + .confirmationData["gatewayCharge"] + .toString(), + style: TextStyle(fontSize: 16), + ), + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Tax", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + controller + .transactionController + .model + .confirmationData["tax"] + .toString(), + style: TextStyle(fontSize: 16), + ), + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceBetween, + children: [ + Text( + "Total Amount", + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + ), + ), + Text( + controller + .transactionController + .model + .confirmationData["totalAmount"] + .toString(), + style: TextStyle(fontSize: 16), + ), + ], + ), + ], ), - padding: EdgeInsets.only( - bottom: 4.0, - ), // Adjust spacing - child: Text( - "TRANSACTIONS DETAILS", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - ), - const SizedBox(height: 20), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Amount", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - Text( - controller - .transactionController - .model - .confirmationData["amount"] - .toString(), - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Our Charge", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - Text( - controller - .transactionController - .model - .confirmationData["charge"] - .toString(), - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Gateway Charge", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - Text( - controller - .transactionController - .model - .confirmationData["gatewayCharge"] - .toString(), - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Tax", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - Text( - controller - .transactionController - .model - .confirmationData["tax"] - .toString(), - style: TextStyle(fontSize: 16), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Text( - "Total Amount", - style: TextStyle( - fontSize: 16, - fontWeight: FontWeight.bold, - ), - ), - Text( - controller - .transactionController - .model - .confirmationData["totalAmount"] - .toString(), - style: TextStyle(fontSize: 16), - ), - ], ), const SizedBox(height: 20), _buildPaymentProcessorButton(), diff --git a/lib/screens/history/history_controller.dart b/lib/screens/history/history_controller.dart index 0b8a323..c5602ae 100644 --- a/lib/screens/history/history_controller.dart +++ b/lib/screens/history/history_controller.dart @@ -1,7 +1,10 @@ import 'package:flutter/material.dart'; import 'package:qpay/http/http.dart'; +import 'package:qpay/models/pageable_model.dart'; class HistoryModel { + PageableModel? pageableModel; + List> transactions = []; bool isLoading = false; String? errorMessage; @@ -26,16 +29,29 @@ class HistoryController extends ChangeNotifier { Future getTransactions(Map params) async { model.isLoading = true; - model.transactions = getFakeTransactions(); + if (params['page'] == '0') { + model.transactions = getFakeTransactions(); + } notifyListeners(); try { params['type'] = 'REQUEST'; - List response = await http.get( + Map response = await http.get( '/transaction?${buildQueryParameters(params)}', ); + + if (params['page'] == '0') { + model.transactions = []; + } + + model.pageableModel = PageableModel.fromJson(response); + + // pagination adds to current list instead of replacing it model.transactions = - response.map((e) => e as Map).toList(); + model.transactions + + model.pageableModel!.content + .map((e) => e as Map) + .toList(); } catch (e) { logger.e(e); _showErrorSnackBar( diff --git a/lib/screens/history/history_screen.dart b/lib/screens/history/history_screen.dart index b6ce009..3e1e980 100644 --- a/lib/screens/history/history_screen.dart +++ b/lib/screens/history/history_screen.dart @@ -24,6 +24,7 @@ class _HistoryScreenState extends State final TextEditingController _searchController = TextEditingController(); final Map _queryParams = {}; final List> _alignListAnimations = []; + final int _pageSize = 8; @override void initState() { @@ -57,7 +58,12 @@ class _HistoryScreenState extends State void setupData() async { prefs = await SharedPreferences.getInstance(); - await controller.getTransactions({'userId': prefs.getString("userId")!}); + await controller.getTransactions({ + 'userId': prefs.getString("userId")!, + 'page': '0', + 'size': _pageSize.toString(), + 'sort': 'createdAt,desc', + }); } @override @@ -99,13 +105,38 @@ class _HistoryScreenState extends State ], ), if (controller.model.transactions.isNotEmpty) - ListView( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), + Column( children: [ - ...controller.model.transactions.map( - (e) => _buildTransactionItem(e, context), + ListView( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + children: [ + ...controller.model.transactions.map( + (e) => _buildTransactionItem(e, context), + ), + ], ), + SizedBox(height: 10), + if (controller.model.pageableModel != null && + controller.model.pageableModel!.number < + controller.model.pageableModel!.totalPages) + OutlinedButton( + child: Text('Load more'), + onPressed: () { + controller.getTransactions({ + 'userId': prefs.getString("userId")!, + 'page': + (controller + .model + .pageableModel! + .number + + 1) + .toString(), + 'size': _pageSize.toString(), + 'sort': 'createdAt,desc', + }); + }, + ), ], ), ], diff --git a/lib/screens/home/home_controller.dart b/lib/screens/home/home_controller.dart index b554f21..062d6c5 100644 --- a/lib/screens/home/home_controller.dart +++ b/lib/screens/home/home_controller.dart @@ -1,8 +1,7 @@ -import 'package:dio/dio.dart'; import 'package:flutter/material.dart'; -import 'package:logger/logger.dart'; import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:qpay/http/http.dart'; +import 'package:qpay/models/pageable_model.dart'; part 'home_controller.freezed.dart'; part 'home_controller.g.dart'; @@ -116,11 +115,14 @@ class HomeController extends ChangeNotifier { notifyListeners(); try { - List response = await http.get( - '/transaction?userId=$userId&type=REQUEST', + Map response = await http.get( + '/transaction?sort=createdAt,desc&size=3&page=0&userId=$userId&type=REQUEST', ); + + PageableModel pageableModel = PageableModel.fromJson(response); + model.transactions = - response.map((e) => e as Map).toList(); + pageableModel.content.map((e) => e as Map).toList(); } catch (e) { logger.e(e); _showErrorSnackBar( diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index a68a9f7..7b94215 100644 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -221,18 +221,6 @@ class _HomeScreenState extends State fontWeight: FontWeight.bold, ), ), - TextButton( - onPressed: () { - context.go('/history'); - }, - child: Text( - 'View All', - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - ), - ), - ), ], ), const SizedBox(height: 5), @@ -250,13 +238,26 @@ class _HomeScreenState extends State ], ), if (homeController.model.transactions.isNotEmpty) - ListView( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), + Column( children: [ - ...homeController.model.transactions.map( - (e) => _buildTransactionItem(e, context), + ListView( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + children: [ + ...homeController.model.transactions.map( + (e) => _buildTransactionItem(e, context), + ), + ], ), + SizedBox(height: 10), + if (homeController.model.transactions.length > + 2) + OutlinedButton( + child: Text('View All'), + onPressed: () { + context.go('/history'); + }, + ), ], ), ], diff --git a/lib/screens/pay/pay_controller.dart b/lib/screens/pay/pay_controller.dart index 305401c..3adae13 100644 --- a/lib/screens/pay/pay_controller.dart +++ b/lib/screens/pay/pay_controller.dart @@ -189,7 +189,7 @@ class PayController extends ChangeNotifier { void updatePhone(String phone) { transactionController.model.formData = transactionController.model.formData - .copyWith(creditPhone: phone); + .copyWith(debitPhone: phone); notifyListeners(); } diff --git a/lib/screens/receipt/receipt_screen.dart b/lib/screens/receipt/receipt_screen.dart index f9f908a..9c10d0e 100644 --- a/lib/screens/receipt/receipt_screen.dart +++ b/lib/screens/receipt/receipt_screen.dart @@ -125,237 +125,240 @@ class _ReceiptScreenState extends State child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Container( - padding: EdgeInsets.all(20), - decoration: BoxDecoration( - gradient: LinearGradient( - begin: Alignment.topLeft, - end: Alignment.bottomRight, - colors: [ - Theme.of( - context, - ).colorScheme.primary.withOpacity(0.1), - Theme.of(context).colorScheme.tertiary - .withOpacity(0.05), - Theme.of(context).colorScheme.tertiary - .withOpacity(0.15), - ], - stops: [0.0, 0.5, 1.0], - ), - border: Border.all( - color: Theme.of( - context, - ).colorScheme.primary.withOpacity(0.3), - ), - borderRadius: BorderRadius.circular(10), - boxShadow: [ - BoxShadow( + Skeletonizer( + enabled: receiptController.model.isLoading, + child: Container( + padding: EdgeInsets.all(20), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Theme.of(context).colorScheme.primary + .withOpacity(0.1), + Theme.of(context).colorScheme.tertiary + .withOpacity(0.05), + Theme.of(context).colorScheme.tertiary + .withOpacity(0.15), + ], + stops: [0.0, 0.5, 1.0], + ), + border: Border.all( color: Theme.of( context, - ).colorScheme.primary.withOpacity(0.1), - blurRadius: 10, - spreadRadius: 1, - offset: Offset(0, 2), + ).colorScheme.primary.withOpacity(0.3), ), - ], - ), - child: Column( - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment.center, - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - Icon( - transactionController - .model - .receiptData?["status"] == - 'SUCCESS' - ? Icons.check_circle - : transactionController - .model - .receiptData?["status"] == - 'PENDING' - ? Icons.pending - : Icons.cancel, - size: 18, - color: - transactionController - .model - .receiptData?["status"] == - 'SUCCESS' - ? Colors.green - : transactionController - .model - .receiptData?["status"] == - 'PENDING' - ? Colors.orange - : Colors.red, - ), - SizedBox(width: 5), - Text( - receiptController - .model - .receiptData?["debitCurrency"] ?? - "", - style: TextStyle( - fontSize: 26, - fontWeight: FontWeight.bold, + borderRadius: BorderRadius.circular(10), + boxShadow: [ + BoxShadow( + color: Theme.of(context) + .colorScheme + .primary + .withOpacity(0.1), + blurRadius: 10, + spreadRadius: 1, + offset: Offset(0, 2), + ), + ], + ), + child: Column( + crossAxisAlignment: + CrossAxisAlignment.center, + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, + children: [ + Icon( + transactionController + .model + .receiptData?["status"] == + 'SUCCESS' + ? Icons.check_circle + : transactionController + .model + .receiptData?["status"] == + 'PENDING' + ? Icons.pending + : Icons.cancel, + size: 18, + color: + transactionController + .model + .receiptData?["status"] == + 'SUCCESS' + ? Colors.green + : transactionController + .model + .receiptData?["status"] == + 'PENDING' + ? Colors.orange + : Colors.red, ), - ), - SizedBox(width: 5), - Text( - receiptController - .model - .receiptData?["totalAmount"] - .toStringAsFixed(2) ?? - "", - style: TextStyle(fontSize: 26), - ), - ], - ), - Column( - crossAxisAlignment: - CrossAxisAlignment.center, - children: [ - SizedBox(height: 5), - // receiptController - // .model - // .receiptData?["providerImage"] != - // null - // ? Image.asset( - // 'assets/${receiptController.model.receiptData?["providerImage"] ?? ''}', - // width: 50, - // ) - // : SizedBox.shrink(), - Text( - receiptController - .model - .receiptData?["billName"] ?? - "", - style: TextStyle(fontSize: 14), - ), - ], - ), - SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment.spaceEvenly, - children: [ - Column( - children: [ - Container( - width: 50, - height: 50, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.white, - border: Border.all( - color: Theme.of(context) - .colorScheme - .primary - .withOpacity(0.3), - width: 1, + SizedBox(width: 5), + Text( + receiptController + .model + .receiptData?["debitCurrency"] ?? + "", + style: TextStyle( + fontSize: 26, + fontWeight: FontWeight.bold, + ), + ), + SizedBox(width: 5), + Text( + receiptController + .model + .receiptData?["totalAmount"] + .toStringAsFixed(2) ?? + "", + style: TextStyle(fontSize: 26), + ), + ], + ), + Column( + crossAxisAlignment: + CrossAxisAlignment.center, + children: [ + SizedBox(height: 5), + // receiptController + // .model + // .receiptData?["providerImage"] != + // null + // ? Image.asset( + // 'assets/${receiptController.model.receiptData?["providerImage"] ?? ''}', + // width: 50, + // ) + // : SizedBox.shrink(), + Text( + receiptController + .model + .receiptData?["billName"] ?? + "", + style: TextStyle(fontSize: 14), + ), + ], + ), + SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, + children: [ + Column( + children: [ + Container( + width: 50, + height: 50, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.white, + border: Border.all( + color: Theme.of(context) + .colorScheme + .primary + .withOpacity(0.3), + width: 1, + ), ), - ), - child: - receiptController - .model - .isLoading - ? Center( - child: SizedBox( - width: 24, - height: 24, - child: CircularProgressIndicator( - strokeWidth: 2.5, - valueColor: - AlwaysStoppedAnimation< - Color - >( - Theme.of( - context, - ) - .colorScheme - .primary, - ), + child: + receiptController + .model + .isLoading + ? Center( + child: SizedBox( + width: 24, + height: 24, + child: CircularProgressIndicator( + strokeWidth: + 2.5, + valueColor: AlwaysStoppedAnimation< + Color + >( + Theme.of( + context, + ) + .colorScheme + .primary, + ), + ), + ), + ) + : IconButton( + onPressed: () { + receiptController + .repeatTransaction( + context, + ); + }, + icon: Icon( + Icons.repeat, + color: + Theme.of( + context, + ) + .colorScheme + .primary, + size: 24, ), ), - ) - : IconButton( - onPressed: () { - receiptController - .repeatTransaction( - context, - ); - }, - icon: Icon( - Icons.repeat, - color: - Theme.of( - context, - ) - .colorScheme - .primary, - size: 24, - ), - ), - ), - SizedBox(height: 8), - Text( - "Repeat", - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.w500, ), - ), - ], - ), - Column( - children: [ - Container( - width: 50, - height: 50, - decoration: BoxDecoration( - shape: BoxShape.circle, - color: Colors.white, - border: Border.all( - color: Theme.of(context) - .colorScheme - .primary - .withOpacity(0.3), - width: 1, + SizedBox(height: 8), + Text( + "Repeat", + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, ), ), - child: IconButton( - onPressed: () { - _captureImage(); - }, - icon: Icon( - Icons.share, - color: - Theme.of( - context, - ).colorScheme.primary, - size: 24, + ], + ), + Column( + children: [ + Container( + width: 50, + height: 50, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Colors.white, + border: Border.all( + color: Theme.of(context) + .colorScheme + .primary + .withOpacity(0.3), + width: 1, + ), + ), + child: IconButton( + onPressed: () { + _captureImage(); + }, + icon: Icon( + Icons.share, + color: + Theme.of( + context, + ).colorScheme.primary, + size: 24, + ), ), ), - ), - SizedBox(height: 8), - Text( - "Share", - style: TextStyle( - fontSize: 14, - fontWeight: FontWeight.w500, + SizedBox(height: 8), + Text( + "Share", + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.w500, + ), ), - ), - ], - ), - ], - ), - ], + ], + ), + ], + ), + ], + ), ), ), SizedBox(height: 20), @@ -405,247 +408,325 @@ class _ReceiptScreenState extends State SizedBox( height: MediaQuery.of(context).size.height * - 0.4, + 0.5, child: TabBarView( controller: _tabController, children: [ - Column( - children: [ - const SizedBox(height: 20), - if (receiptController - .model - .receiptData?["additionalData"] == - null) + Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + children: [ Skeletonizer( enabled: receiptController .model .isLoading, - child: Column( + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, children: [ - SizedBox(height: 20), - Center( - child: Text( - "No details found", + Text( + "Status", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), + ), + Text( + transactionController + .model + .receiptData?["status"] ?? + "", + style: TextStyle( + fontSize: 16, ), ), ], ), ), - if (receiptController + const SizedBox(height: 10), + Skeletonizer( + enabled: + receiptController + .model + .isLoading, + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "From", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), + ), + Text( + receiptController + .model + .receiptData?["debitPhone"] ?? + "", + style: TextStyle( + fontSize: 16, + ), + ), + ], + ), + ), + const SizedBox(height: 10), + Skeletonizer( + enabled: + receiptController + .model + .isLoading, + child: Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "To", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), + ), + Text( + receiptController + .model + .receiptData?["creditAccount"] ?? + "", + style: TextStyle( + fontSize: 16, + ), + ), + ], + ), + ), + const SizedBox(height: 10), + Divider( + color: Colors.grey[300], + thickness: 1, + ), + const SizedBox(height: 10), + if (receiptController + .model + .receiptData?["additionalData"] == + null) + Skeletonizer( + enabled: + receiptController + .model + .isLoading, + child: Column( + children: [ + SizedBox(height: 20), + Center( + child: Text( + "No details found", + ), + ), + ], + ), + ), + if (receiptController + .model + .receiptData?["additionalData"] != + null) + ...receiptController .model - .receiptData?["additionalData"] != - null) - ...receiptController - .model - .receiptData?["additionalData"] - .map((data) { - return Column( - children: [ - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - data["name"] ?? - "", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight - .bold, + .receiptData?["additionalData"] + .map((data) { + return Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + data["name"] ?? + "", + style: TextStyle( + fontSize: + 16, + fontWeight: + FontWeight + .bold, + ), ), - ), - Text( - data["value"] ?? - "", - style: - TextStyle( - fontSize: - 16, - ), - ), - ], - ), - const SizedBox( - height: 10, - ), - ], - ); - }) - .toList(), - ], + Text( + data["value"] ?? + "", + style: + TextStyle( + fontSize: + 16, + ), + ), + ], + ), + const SizedBox( + height: 10, + ), + ], + ); + }) + .toList(), + ], + ), ), - Column( - children: [ - const SizedBox(height: 20), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Status", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, + Padding( + padding: const EdgeInsets.all(10.0), + child: Column( + children: [ + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "Amount", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), ), - ), - Text( - transactionController - .model - .receiptData?["status"] ?? - "", - style: TextStyle( - fontSize: 16, + Text( + transactionController + .model + .receiptData?["amount"] + .toStringAsFixed( + 2, + ) ?? + "0.00", + style: TextStyle( + fontSize: 16, + ), ), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Amount", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "Our Charge", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), ), - ), - Text( - transactionController - .model - .receiptData?["amount"] - .toStringAsFixed( - 2, - ) ?? - "0.00", - style: TextStyle( - fontSize: 16, + Text( + transactionController + .model + .receiptData?["charge"] + .toStringAsFixed( + 2, + ) ?? + "0.00", + style: TextStyle( + fontSize: 16, + ), ), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Our Charge", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "Gateway Charge", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), ), - ), - Text( - transactionController - .model - .receiptData?["charge"] - .toStringAsFixed( - 2, - ) ?? - "0.00", - style: TextStyle( - fontSize: 16, + Text( + transactionController + .model + .receiptData?["gatewayCharge"] + .toStringAsFixed( + 2, + ) ?? + "0.00", + style: TextStyle( + fontSize: 16, + ), ), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Gateway Charge", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "Tax", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), ), - ), - Text( - transactionController - .model - .receiptData?["gatewayCharge"] - .toStringAsFixed( - 2, - ) ?? - "0.00", - style: TextStyle( - fontSize: 16, + Text( + transactionController + .model + .receiptData?["tax"] + .toStringAsFixed( + 2, + ) ?? + "0.00", + style: TextStyle( + fontSize: 16, + ), ), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Tax", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, + ], + ), + const SizedBox(height: 10), + Row( + mainAxisAlignment: + MainAxisAlignment + .spaceBetween, + children: [ + Text( + "Total Amount", + style: TextStyle( + fontSize: 16, + fontWeight: + FontWeight.bold, + ), ), - ), - Text( - transactionController - .model - .receiptData?["tax"] - .toStringAsFixed( - 2, - ) ?? - "0.00", - style: TextStyle( - fontSize: 16, + Text( + transactionController + .model + .receiptData?["totalAmount"] + .toStringAsFixed( + 2, + ) ?? + "0.00", + style: TextStyle( + fontSize: 16, + ), ), - ), - ], - ), - const SizedBox(height: 10), - Row( - mainAxisAlignment: - MainAxisAlignment - .spaceBetween, - children: [ - Text( - "Total Amount", - style: TextStyle( - fontSize: 16, - fontWeight: - FontWeight.bold, - ), - ), - Text( - transactionController - .model - .receiptData?["totalAmount"] - .toStringAsFixed( - 2, - ) ?? - "0.00", - style: TextStyle( - fontSize: 16, - ), - ), - ], - ), - const SizedBox(height: 20), - ], + ], + ), + const SizedBox(height: 20), + ], + ), ), ], ),