import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/material.dart'; import 'package:mohem_flutter_app/api/profile_api_client.dart'; import 'package:mohem_flutter_app/classes/colors.dart'; import 'package:mohem_flutter_app/classes/utils.dart'; import 'package:mohem_flutter_app/config/routes.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/generated/locale_keys.g.dart'; import 'package:mohem_flutter_app/models/dashboard/menu_entries.dart'; import 'package:mohem_flutter_app/models/get_employee_contacts.model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_familyMembers_screen.dart'; import 'package:mohem_flutter_app/ui/profile/profile_screen.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:provider/provider.dart'; class FamilyMembers extends StatefulWidget { const FamilyMembers({Key? key}) : super(key: key); @override _FamilyMembersState createState() => _FamilyMembersState(); } class _FamilyMembersState extends State { List getEmployeeContactsList = []; int? relationId; int? flag; GetMenuEntriesList menuEntries = GetMenuEntriesList(); @override void initState() { super.initState(); List menuData = Provider.of(context, listen: false).getMenuEntriesList!; menuEntries = menuData.where((GetMenuEntriesList e) => e.requestType == 'CONTACT').toList()[0]; setState(() {}); getEmployeeContacts(); } void getEmployeeContacts() async { try { Utils.showLoading(context); getEmployeeContactsList = await ProfileApiClient().getEmployeeContacts(); Utils.hideLoading(context); setState(() {}); } catch (ex) { Utils.hideLoading(context); Utils.handleException(ex, context, null); } } Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget( context, title: LocaleKeys.profile_familyDetails.tr(), ), backgroundColor: MyColors.backgroundColor, bottomSheet: footer(), body: Container( width: MediaQuery.of(context).size.width, child: getEmployeeContactsList.length != 0 ? SingleChildScrollView( scrollDirection: Axis.vertical, child: Column( children: [ ListView.builder( scrollDirection: Axis.vertical, shrinkWrap: true, physics: ScrollPhysics(), itemCount: getEmployeeContactsList.length, itemBuilder: (context, index) { return Container( child: Column( children: [ Container( width: double.infinity, margin: EdgeInsets.only( top: 20, left: 21, right: 21, ), padding: EdgeInsets.only( left: 14, right: 14, top: 13, ), height: 110, decoration: BoxDecoration( boxShadow: [ BoxShadow( color: Colors.grey.withOpacity(0.5), spreadRadius: 5, blurRadius: 26, offset: Offset(0, 3), ), ], color: Colors.white, borderRadius: BorderRadius.circular(10.0), ), child: Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ "${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.blackColor), "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(isBold: true, color: MyColors.textMixColor), SizedBox( height: 5, ), Divider( color: MyColors.lightGreyEFColor, height: 20, thickness: 1, indent: 0, endIndent: 0, ), Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Container( child: menuEntries.updateButton == 'Y' ? InkWell( onTap: () async{ relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); showUpdateAlertDialog(context, relationId!.toInt(), 2, LocaleKeys.update.tr()); }, child: RichText( text: TextSpan( children: [ WidgetSpan( child: Icon( Icons.edit, size: 15, color: MyColors.grey67Color, ), ), TextSpan( text: LocaleKeys.update.tr(), style: TextStyle( color: MyColors.grey67Color, fontSize: 12, fontWeight: FontWeight.bold, ), ), ], ), ), ) : RichText( text: TextSpan( children: [ WidgetSpan( child: Icon( Icons.edit, size: 15, color: MyColors.lightGreyColor, ), ), TextSpan( text: LocaleKeys.update.tr(), style: TextStyle( color: MyColors.lightGreyColor, fontSize: 12, fontWeight: FontWeight.bold, ), ), ], ), ) ), Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: SizedBox( child: Container( width: 3, color: MyColors.lightGreyEFColor, ), ), ), Container( child: InkWell( onTap: () { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID!.toInt(); showRemoveAlertDialog(context, relationId!.toInt()); }, child: RichText( text: TextSpan( children: [ WidgetSpan( child: Icon( Icons.delete, size: 15, color: Color(0x99FF0000), ), ), TextSpan( text: LocaleKeys.remove.tr(), style: TextStyle( color: MyColors.DarkRedColor, fontSize: 12, fontWeight: FontWeight.bold, ), ), ], ), ), )), // ElevatedButton.icon( // icon: Icon( // Icons.delete, // size: 15, // color: Color(0x99FF0000), // ), // style: ElevatedButton.styleFrom( // shadowColor: Colors.white, // primary: Colors.white, // ), // label: "remove".toText12(color: MyColors.DarkRedColor), // onPressed: (){}, // ), ], ), ]), ), ], )); }) ], ), ) : Container(), // SizedBox(height: 20), )); } Widget footer() { return Container( decoration: BoxDecoration( color: MyColors.white, boxShadow: [ BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), ], ), child: DefaultButton( LocaleKeys.addNewFamilyMember.tr(), () async { Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": 1, "actionType": "ADD"}); ProfileScreen(); } ) .insideContainer, ); } void showUpdateAlertDialog(BuildContext context, int relationId, int flag, String actionType) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), ), onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( child: Text( LocaleKeys.ok.tr(), ), onPressed: () { Navigator.pushNamed( context, AppRoutes.addUpdateFamilyMember, arguments: {"relationID": relationId, "flag": flag, "actionType": "UPDATE"}, ); }, ); AlertDialog alert = AlertDialog( title: Text( LocaleKeys.confirm.tr(), ), content: Text(LocaleKeys.updateThisMember.tr()), actions: [ cancelButton, continueButton, ], ); showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } void showRemoveAlertDialog(BuildContext context, int relationId) { Widget cancelButton = TextButton( child: Text( LocaleKeys.cancel.tr(), ), onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( child: Text( LocaleKeys.ok.tr(), ), onPressed: () { Navigator.pushNamed(context, AppRoutes.deleteFamilyMember, arguments: relationId); // continueDynamicForms(); }, ); AlertDialog alert = AlertDialog( title: Text( LocaleKeys.confirm.tr(), ), content: Text(LocaleKeys.removeThisMember.tr()), actions: [ cancelButton, continueButton, ], ); showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } // void continueDynamicForms() { // Navigator.pushNamed(context, AppRoutes.addDynamicInputProfile, arguments: DynamicFamilyMembersParams(LocaleKeys.profile_familyDetails.tr(), getEmployeeContactsList: getEmployeeContactsList)); // } }