From 5dee1dcde0cfd149b06d419edc19d7809f50d6ef Mon Sep 17 00:00:00 2001 From: yaso Date: Mon, 25 Nov 2024 12:15:16 +0200 Subject: [PATCH] create builder to display card list --- .../builder/build_loyalty_card_list.dart | 119 ++++++++++++++++++ 1 file changed, 119 insertions(+) create mode 100644 Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart diff --git a/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart b/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart new file mode 100644 index 00000000..eea90871 --- /dev/null +++ b/Frontend/lib/mih_packages/mzansi_wallet/builder/build_loyalty_card_list.dart @@ -0,0 +1,119 @@ +import 'package:Mzansi_Innovation_Hub/main.dart'; +import 'package:Mzansi_Innovation_Hub/mih_apis/mih_mzansi_wallet_apis.dart'; +import 'package:Mzansi_Innovation_Hub/mih_components/mih_layout/mih_window.dart'; +import 'package:Mzansi_Innovation_Hub/mih_objects/app_user.dart'; +import 'package:Mzansi_Innovation_Hub/mih_objects/loyalty_card.dart'; +import 'package:Mzansi_Innovation_Hub/mih_packages/mzansi_wallet/components/mih_card_display.dart'; +import 'package:flutter/material.dart'; +import 'package:syncfusion_flutter_barcodes/barcodes.dart'; + +class BuildLoyaltyCardList extends StatefulWidget { + final AppUser signedInUser; + final List cardList; + const BuildLoyaltyCardList({ + super.key, + required this.signedInUser, + required this.cardList, + }); + + @override + State createState() => _BuildLoyaltyCardListState(); +} + +class _BuildLoyaltyCardListState extends State { + void viewCardWindow(int index) { + showDialog( + context: context, + barrierDismissible: false, + builder: (context) => MIHWindow( + fullscreen: false, + windowTitle: widget.cardList[index].shop_name.toUpperCase(), + windowTools: [ + IconButton( + onPressed: () { + MIHMzansiWalletApis.deleteLoyaltyCardAPICall( + widget.signedInUser, + widget.cardList[index].idloyalty_cards, + context, + ); + }, + icon: Icon( + Icons.delete, + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + ], + onWindowTapClose: () { + Navigator.pop(context); + }, + windowBody: [ + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + MihCardDisplay( + shopName: widget.cardList[index].shop_name, height: 250), + ], + ), + const SizedBox(height: 15), + SizedBox( + height: 150, + child: + SfBarcodeGenerator(value: widget.cardList[index].card_number), + ), + Text( + "Card Number: ${widget.cardList[index].card_number}", + style: TextStyle( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + if (widget.cardList.isNotEmpty) { + return ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + separatorBuilder: (BuildContext context, int index) { + return Divider( + color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + ); + }, + itemCount: widget.cardList.length, + itemBuilder: (context, index) { + return ListTile( + title: MihCardDisplay( + shopName: widget.cardList[index].shop_name, height: 200), + // subtitle: Text( + // "Card Number: ${widget.cardList[index].card_number}", + // style: TextStyle( + // color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + // ), + // ), + // trailing: Icon( + // Icons.arrow_forward, + // color: MzanziInnovationHub.of(context)!.theme.secondaryColor(), + // ), + onTap: () { + viewCardWindow(index); + }, + ); + }, + ); + } else { + return const Padding( + padding: EdgeInsets.only(top: 25.0), + child: Center( + child: Text( + "No Cards Available", + style: TextStyle(fontSize: 25, color: Colors.grey), + textAlign: TextAlign.center, + ), + ), + ); + } + } +}