import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:generp/Notifiers/crmProvider/crmProspectDetailsProvider.dart'; import 'package:provider/provider.dart'; import '../../Utils/app_colors.dart'; import '../../Utils/commonWidgets.dart'; class ProspectContactDetails extends StatefulWidget { final accountId; const ProspectContactDetails({super.key,required this.accountId}); @override State createState() => _ProspectContactDetailsState(); } class _ProspectContactDetailsState extends State { @override Widget build(BuildContext context) { return Consumer( builder: (context, provider, child) { var customerDetails = provider.contactList; return WillPopScope( onWillPop: () => onBackPressed(context), child: Scaffold( resizeToAvoidBottomInset: true, appBar: appbar(context, "Contact Details"), backgroundColor: AppColors.scaffold_bg_color, body: SafeArea( child: SizedBox( child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget(context, "Contact Details"), ListView.builder( itemCount: customerDetails.length, shrinkWrap: true, itemBuilder: (context, index) { return Container( margin: EdgeInsets.symmetric( horizontal: 10, vertical: 5, ), padding: EdgeInsets.symmetric( horizontal: 15, vertical: 10, ), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(20), ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 1, child: Container( height: 50, width: 35, padding: EdgeInsets.all(8.0), decoration: BoxDecoration( color: Color(0xFFE6F6FF), borderRadius: BorderRadius.circular( 8, ), ), child: SvgPicture.asset( "assets/svg/crm_contact_profile.svg", ), ), ), SizedBox(width: 10), Expanded( flex: 4, child: SizedBox( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( customerDetails[index].name ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ], ), ), ), SizedBox(width: 10), Expanded( flex: 1, child: InkResponse( onTap: () { provider.editNameController.text = customerDetails[index].name??""; provider.editDesignationController.text = customerDetails[index].designation??""; provider.editMobileNumberController.text = customerDetails[index].mob1??""; provider.editAlternativeMobileController.text = customerDetails[index].mob2??""; provider.editTelephoneController.text = customerDetails[index].tel??""; provider.editEmailController.text = customerDetails[index].email??""; _showEditContactSheet(context, index,provider.accountDetails.id!); }, child: Container( height: 35, width: 30, padding: EdgeInsets.all(8.0), child: SvgPicture.asset( "assets/svg/crm_contact_edit.svg", ), ), ), ), ], ), Divider( thickness: 0.5, color: Color(0xFFD7D7D7), ), ...List.generate(5, (j) { final textheads = [ "Mobile", "Alternate Mobile", "Telephone Number", "Email", "Designation", ]; final textSubheads = [ customerDetails[index].mob1 ?? "-", customerDetails[index].mob2 ?? "-", customerDetails[index].tel ?? "-", customerDetails[index].email ?? "-", customerDetails[index].designation ?? "-", ]; return Container( padding: EdgeInsets.symmetric( vertical: 6, horizontal: 0, ), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textheads[j].toString(), maxLines: 2, overflow: TextOverflow.ellipsis, ), ), Expanded( child: Text( textSubheads[j] == "" ? "-" : textSubheads[j], maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle( color: Color(0xFF818181), ), ), ), ], ), ); }), ], ), ); }, ), SizedBox(height: 75), ], ), ), ), ), floatingActionButton: Align( alignment: Alignment.bottomCenter, child: InkWell( onTap: () { _showAddContactSheet(context,provider.accountDetails.id!); }, child: Container( alignment: Alignment.bottomCenter, height: 45, width: MediaQuery.of(context).size.width, margin: EdgeInsets.symmetric(horizontal: 10), decoration: BoxDecoration( color: AppColors.app_blue, borderRadius: BorderRadius.circular(14.0), ), child: Center( child: Text( "Add Contact", textAlign: TextAlign.center, style: TextStyle( color: Colors.white, fontFamily: "JakartaMedium", ), ), ), ), ), ), floatingActionButtonLocation: FloatingActionButtonLocation.centerFloat, ), ); }, ); } Future _showAddContactSheet(BuildContext context,accID) { return showModalBottomSheet( useSafeArea: true, isDismissible: true, isScrollControlled: true, showDragHandle: true, backgroundColor: Colors.white, enableDrag: true, context: context, builder: (context) { return StatefulBuilder( builder: (context, setState) { return SafeArea( child: Consumer( builder: (context, provider, child) { return Container( margin: EdgeInsets.only( bottom: 15, left: 15, right: 15, top: 10, ), padding: EdgeInsets.only( bottom: MediaQuery.of(context).viewInsets.bottom, ), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Align( alignment: Alignment.topLeft, child: Text( "Add Contact", style: TextStyle( color: AppColors.app_blue, fontSize: 16, ), ), ), textControllerWidget( context, provider.nameController, "Enter Name", provider.onChangeName, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.nameError), textControllerWidget( context, provider.designationController, "Enter Designation", provider.onChangeDesignation, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.designationError), textControllerWidget( context, provider.mobileNumberController, "Enter Mobile Number", provider.onChangeMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.mobileNumError), textControllerWidget( context, provider.alternativeMobileController, "Enter Alternative Mobile Number", provider.onChangeAltMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.altMobError), textControllerWidget( context, provider.telephoneController, "Enter Telephone Number", provider.onChangeTelephone, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.teleError), textControllerWidget( context, provider.emailController, "Enter EmailID", provider.onChangeEmailId, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.emailError), InkWell( onTap: provider.isLoading?null:(){ provider.isLoading = true; provider.crmProspectDetailsAddContactAPIFunction(context, accID); }, child: Container( alignment: Alignment.center, height: 45, margin: EdgeInsets.only( left: 5.0, right: 5.0, top: 5.0, bottom: 5.0, ), decoration: BoxDecoration( color: AppColors.app_blue, //1487C9 borderRadius: BorderRadius.circular(14.0), ), child: Center( child: provider.isLoading?CircularProgressIndicator.adaptive(valueColor: AlwaysStoppedAnimation(AppColors.white),):Text( "Submit", textAlign: TextAlign.center, style: TextStyle(color: Colors.white), ), ), ), ), ], ), ), ); }, ), ); }, ); }, ); } Future _showEditContactSheet(BuildContext context, index,accid) { return showModalBottomSheet( useSafeArea: true, isDismissible: true, isScrollControlled: true, showDragHandle: true, backgroundColor: Colors.white, enableDrag: true, context: context, builder: (context) { return StatefulBuilder( builder: (context, setState) { return SafeArea( child: Consumer( builder: (context, provider, child) { return Container( margin: EdgeInsets.only( bottom: 15, left: 15, right: 15, top: 10, ), padding: EdgeInsets.only( bottom: MediaQuery.of(context).viewInsets.bottom, ), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Align( alignment: Alignment.topLeft, child: Text( "Edit Contact", style: TextStyle( color: AppColors.app_blue, fontSize: 16, ), ), ), textControllerWidget( context, provider.editNameController, "Enter Name", provider.onChangeEditName, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editNameError), textControllerWidget( context, provider.editDesignationController, "Enter Designation", provider.onChangeEditDesignation, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editDesignationError), textControllerWidget( context, provider.editMobileNumberController, "Enter Mobile Number", provider.onChangeEditMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editMobileNumError), textControllerWidget( context, provider.editAlternativeMobileController, "Enter Alternative Mobile Number", provider.onChangeEditAltMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editAltMobError), textControllerWidget( context, provider.editTelephoneController, "Enter Telephone Number", provider.onChangeEditTelephone, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editTeleError), textControllerWidget( context, provider.editEmailController, "Enter EmailID", provider.onChangeEditEmailId, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editEmailError), InkWell( onTap: provider.isLoading?null:(){ provider.isLoading = true; provider.crmProspectDetailsEditContactAPIFunction(context, provider.contactList[index].id,accid); }, child: Container( alignment: Alignment.center, height: 45, margin: EdgeInsets.only( left: 5.0, right: 5.0, top: 5.0, bottom: 5.0, ), decoration: BoxDecoration( color: AppColors.app_blue, //1487C9 borderRadius: BorderRadius.circular(14.0), ), child: Center( child: provider.isLoading?CircularProgressIndicator.adaptive(valueColor: AlwaysStoppedAnimation(AppColors.white),):Text( "Submit", textAlign: TextAlign.center, style: TextStyle(color: Colors.white), ), ), ), ), ], ), ), ); }, ), ); }, ); }, ); } }