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/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_address_model.dart'; import 'package:mohem_flutter_app/models/get_employee_basic_details.model.dart'; import 'package:mohem_flutter_app/models/get_employee_phones_model.dart'; import 'package:mohem_flutter_app/provider/dashboard_provider_model.dart'; import 'package:mohem_flutter_app/ui/profile/dynamic_screens/dynamic_input_address_screen.dart'; import 'package:mohem_flutter_app/ui/profile/phone_numbers.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:provider/provider.dart'; class ContactDetails extends StatefulWidget { const ContactDetails({Key? key}) : super(key: key); @override _ContactDetailsState createState() => _ContactDetailsState(); } class _ContactDetailsState extends State { String? fullName = ""; String? maritalStatus = ""; String? birthDate = ""; String? civilIdentityNumber = ""; String? emailAddress = ""; String? employeeNo = ""; int? correctOrNew = 1; List getEmployeePhonesList = []; List getEmployeeAddressList = []; List getEmployeeBasicDetailsList = []; GetMenuEntriesList menuEntriesPhone = GetMenuEntriesList(); GetMenuEntriesList menuEntriesAddress = GetMenuEntriesList(); @override void initState() { super.initState(); List menuData = Provider.of(context, listen: false).getMenuEntriesList!; var filterList = menuData.where((GetMenuEntriesList e) => e.requestType == 'PHONE_NUMBERS').toList(); if (filterList.isNotEmpty) { menuEntriesPhone = filterList.first; } filterList = menuData.where((GetMenuEntriesList e) => e.requestType == 'ADDRESS').toList(); if (filterList.isNotEmpty) { menuEntriesAddress = filterList.first; } getEmployeePhones(); } void getEmployeePhones() async { try { Utils.showLoading(context); getEmployeePhonesList = await ProfileApiClient().getEmployeePhones(); getEmployeeAddressList = await ProfileApiClient().getEmployeeAddress(); 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_contactDetails.tr(), ), backgroundColor: MyColors.backgroundColor, // bottomSheet: footer(), body: ListView( padding: const EdgeInsets.all(21), children: [ if (getEmployeePhonesList.isNotEmpty) Stack( children: [ ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsets.zero, itemBuilder: (cxt, index) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ "${getEmployeePhonesList[index].pHONETYPEMEANING}".toText13(color: MyColors.lightGrayColor), ("${getEmployeePhonesList[index].pHONENUMBER}" ?? "").toText16(isBold: true, color: MyColors.blackColor), ], ), separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeePhonesList.length), if (menuEntriesPhone.updateButton == 'Y') Positioned( top: 1, right: 1, child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(updatePhone), ), ], ).objectContainerView(), 12.height, if (getEmployeeAddressList.isNotEmpty) Stack( children: [ ListView.separated( physics: const NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsets.zero, itemBuilder: (cxt, index) => Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ "${getEmployeeAddressList[index].sEGMENTPROMPT}".toText13(color: MyColors.lightGrayColor), ("${getEmployeeAddressList[index].sEGMENTVALUEDSP}" ?? "").toText16(isBold: true, color: MyColors.blackColor), ], ), separatorBuilder: (cxt, index) => 12.height, itemCount: getEmployeeAddressList.length), if (menuEntriesAddress.updateButton == 'Y') Positioned( top: 1, right: 1, child: const Icon(Icons.edit_location_alt_outlined, size: 20).onPress(addUpdateAddress), ), ], ).objectContainerView() ], ), ); } void updatePhone() { Navigator.push( context, MaterialPageRoute(builder: (context) => PhoneNumbers(getEmployeePhonesList: this.getEmployeePhonesList)), ); } void addUpdateAddress() { Widget cancelButton = TextButton( child: Text("Cancel"), onPressed: () { Navigator.pop(context); }, ); Widget continueButton = TextButton( child: Text("Next"), onPressed: () { continueDynamicForms(); }, ); StatefulBuilder alert = StatefulBuilder(builder: (context, setState) { return AlertDialog( shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(10.0))), title: Text("Confirm"), content: Builder(builder: (context) { // Get available height and width of the build area of this widget. Make a choice depending on the size. var height = MediaQuery.of(context).size.height * .5; return Container( height: height, child: Column(children: [ Text( "Select the type of change you want to make.", style: TextStyle(fontSize: 16, fontWeight: FontWeight.bold), ), Divider(), Column( children: [ ListTile( title: Text("Correct or amend this address"), leading: Radio( value: 1, groupValue: correctOrNew, onChanged: (value) { setState(() { correctOrNew = int.parse(value.toString()); }); }, activeColor: Colors.green, ), ), ListTile( title: Text("Enter a new address if you have moved"), leading: Radio( value: 2, groupValue: correctOrNew, onChanged: (value) { setState(() { correctOrNew = int.parse(value.toString()); }); }, activeColor: Colors.green, ), ), ], ) ])); }), actions: [ cancelButton, continueButton, ], ); }); showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } void continueDynamicForms() { Navigator.pushNamed(context, AppRoutes.addDynamicAddressScreen, arguments: DynamicProfileParams(LocaleKeys.profile_address.tr(), 'HR_PERINFO_SS', uRL: 'GET_ADDRESS_DFF_STRUCTURE', requestID: 'BASIC_DETAILS', getEmployeeAddressList: getEmployeeAddressList, correctOrNew: correctOrNew!)); } }