import 'package:easy_localization/src/public_ext.dart'; import 'package:flutter/gestures.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/int_extensions.dart'; import 'package:mohem_flutter_app/extensions/string_extensions.dart'; import 'package:mohem_flutter_app/extensions/widget_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/add_update_family_member.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 = []; dynamic? relationId; int? flag; GetMenuEntriesList menuEntries = GetMenuEntriesList(); @override void initState() { super.initState(); List menuData = Provider.of(context, listen: false).getMenuEntriesList!; List arr = menuData.where((GetMenuEntriesList e) => e.requestType == 'CONTACT').toList(); if (arr.isNotEmpty) { menuEntries = arr[0]; } else { menuEntries = new GetMenuEntriesList(); } 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, body: Column( children: [ Expanded( child: getEmployeeContactsList.isEmpty ? Utils.getNoDataWidget(context) : ListView.separated( padding: const EdgeInsets.all(21), separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeeContactsList.length, itemBuilder: (context, index) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ "${getEmployeeContactsList[index].cONTACTNAME}".toText16(color: MyColors.grey3AColor), "${getEmployeeContactsList[index].rELATIONSHIP}".toText11(color: MyColors.textMixColor), ]).paddingOnly(top: 15, left: 13, right: 13, bottom: 12), 1.divider, Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ // todo @faitma clean below logic and write clean code. RichText( text: TextSpan( children: [ WidgetSpan( child: Icon( Icons.edit, size: 14, color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor, )), TextSpan( text: LocaleKeys.update.tr(), style: TextStyle( color: menuEntries.updateButton == 'Y' ? MyColors.grey67Color : MyColors.lightGreyColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), recognizer: TapGestureRecognizer() ..onTap = () async { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; menuEntries.updateButton == 'Y' ? showUpdateAlertDialog(context, relationId, 2, "UPDATE") : null; }) ], ), ), Container(height: 35, width: 1, color: const Color(0xffEFEFEF)), RichText( text: TextSpan( children: [ WidgetSpan( child: Icon( Icons.delete, size: 15, color: menuEntries.updateButton == 'Y' ? MyColors.redColor : MyColors.lightGreyColor, ), ), TextSpan( text: LocaleKeys.remove.tr(), style: TextStyle( color: menuEntries.updateButton == 'Y' ? MyColors.redColor : MyColors.lightGreyColor, fontSize: 12, letterSpacing: -0.36, fontWeight: FontWeight.w600), ), ], ), ).onPress(() { relationId = getEmployeeContactsList[index]!.cONTACTRELATIONSHIPID; menuEntries.updateButton == 'Y' ? showRemoveAlertDialog(context, relationId) : null; }), ], ), ], ).objectContainerView(disablePadding: true); }), ), DefaultButton( LocaleKeys.addNewFamilyMember.tr(), menuEntries.updateButton == 'Y' ? () async { Navigator.pushNamed(context, AppRoutes.addUpdateFamilyMember, arguments: FamilyMemberScreenParams( relationId, flag: 1, actionType: "ADD")); // ProfileScreen(); } : null) .insideContainer, ], )); } void showUpdateAlertDialog(BuildContext context, 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:FamilyMemberScreenParams(relationId, flag: 2, actionType: "UPDATE"), ); }, ); AlertDialog alert = AlertDialog( title: Text( LocaleKeys.confirm.tr(), ), content: Text(LocaleKeys.updateMember.tr()), actions: [ cancelButton, continueButton, ], ); showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } void showRemoveAlertDialog(BuildContext context, 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: FamilyMemberScreenParams(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; }, ); } }