import 'dart:convert'; 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/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/models/profile/phone_number_types_modek.dart'; import 'package:mohem_flutter_app/models/profile/submit_phone_transactions.dart'; import 'package:mohem_flutter_app/ui/misc/request_submit_screen.dart'; import 'package:mohem_flutter_app/ui/profile/profile.dart'; import 'package:mohem_flutter_app/widgets/app_bar_widget.dart'; import 'package:mohem_flutter_app/widgets/button/default_button.dart'; import 'package:mohem_flutter_app/widgets/dynamic_forms/dynamic_textfield_widget.dart'; class PhoneNumbers extends StatefulWidget { List getEmployeePhonesList; PhoneNumbers({Key? key, required this.getEmployeePhonesList}) : super(key: key); @override _PhoneNumbersState createState() => _PhoneNumbersState(); } class _PhoneNumbersState extends State { List getPhoneNumberTypesList = []; SubmitPhonesTransactionList submitPhoneNumbers = SubmitPhonesTransactionList(); @override void initState() { super.initState(); getPhoneNumberTypes(); } void getPhoneNumberTypes() async { Utils.showLoading(context); getPhoneNumberTypesList = await ProfileApiClient().getPhoneNumberTypes(); setState(() {}); Utils.hideLoading(context); } Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget( context, title: LocaleKeys.profile_contactDetails.tr(), ), backgroundColor: MyColors.backgroundColor, bottomSheet: footer(), body: SingleChildScrollView( child: Column(children: [ Container( width: double.infinity, margin: EdgeInsets.only(left: 25, right: 25, top: 25), padding: EdgeInsets.all(20), // height: 400, decoration: BoxDecoration(color: Colors.white, borderRadius: BorderRadius.circular(10.0), border: Border.all(color: Color.fromARGB(255, 209, 207, 207))), child: InkWell( child: Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( Icons.add, color: Color(0xff259CB8), ), Text( 'Add new row', style: TextStyle(color: Color(0xff259CB8), fontWeight: FontWeight.bold), ) ]), onTap: () { addNewRow(); }, ), ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: widget.getEmployeePhonesList .map((e) => e.aCTION != 'DELETE_ROW' ? Container( width: double.infinity, margin: EdgeInsets.only( top: 20, left: 26, right: 26, ), padding: EdgeInsets.only(left: 14, right: 14, top: 15, bottom: 15), // height: 400, 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: [ PopupMenuButton( child: DynamicTextFieldWidget( "Please Select *", e.pHONETYPEMEANING ?? "", isEnable: false, isPopup: true, ).paddingOnly(bottom: 12), itemBuilder: (_) => >[ for (int i = 0; i < getPhoneNumberTypesList.length; i++) PopupMenuItem(child: Text(getPhoneNumberTypesList![i].mEANING!), value: i), ], onSelected: (int index) { e.pHONETYPEMEANING = getPhoneNumberTypesList[index].mEANING; e.pHONETYPE = getPhoneNumberTypesList[index].cODE; setState(() {}); }), DynamicTextFieldWidget( "", e.pHONENUMBER ?? "", isReadOnly: false, onChange: (text) { e.pHONENUMBER = text; }, ).paddingOnly(bottom: 12), InkWell( child: Row(mainAxisAlignment: MainAxisAlignment.end, children: [ Icon( Icons.delete, color: Colors.red, size: 18, ), Text( 'Delete', style: TextStyle(color: Colors.red, fontWeight: FontWeight.bold), ) ]), onTap: () { // widget.getEmployeePhonesList.removeWhere((item) => item.pHONEID == e.pHONEID); setState(() { deleteRow(e); }); }, ), SizedBox( height: 10, ), ])) : Container()) .toList()), SizedBox( height: 80, ) ]))); } footer() { return Container( decoration: BoxDecoration( color: MyColors.white, boxShadow: [ BoxShadow(color: MyColors.lightGreyEFColor, spreadRadius: 3), ], ), child: DefaultButton(LocaleKeys.update.tr(), () async { updatePhone(); }).insideContainer, ); } void updatePhone() async { Utils.showLoading(context); setUpdateStatus(); submitPhoneNumbers = await ProfileApiClient().submitPhoneNumbers(widget.getEmployeePhonesList); Utils.hideLoading(context); Navigator.pushNamed(context, AppRoutes.requestSubmitScreen, arguments: RequestSubmitScreenParams(LocaleKeys.profile_contactDetails.tr(), submitPhoneNumbers.pTRANSACTIONID!, submitPhoneNumbers.pITEMKEY!, 'phone_numbers')); } void setUpdateStatus() { widget.getEmployeePhonesList.forEach((element) { if (element.aCTION == null) { element.aCTION = 'UPDATE_ROW'; element.dATEFROM = ''; element.dATETO = ''; } }); } void addNewRow() { setState(() { widget.getEmployeePhonesList.add(GetEmployeePhonesList(aCTION: 'NEW_ROW')); }); } void deleteRow(GetEmployeePhonesList row) { row.aCTION = 'DELETE_ROW'; } }