create builder to display card list

This commit is contained in:
2024-11-25 12:15:16 +02:00
parent f348b8bfd6
commit 5dee1dcde0

View File

@@ -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<MIHLoyaltyCard> cardList;
const BuildLoyaltyCardList({
super.key,
required this.signedInUser,
required this.cardList,
});
@override
State<BuildLoyaltyCardList> createState() => _BuildLoyaltyCardListState();
}
class _BuildLoyaltyCardListState extends State<BuildLoyaltyCardList> {
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,
),
),
);
}
}
}