import 'dart:io'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:dotted_line/dotted_line.dart'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/svg.dart'; import 'package:generp/Notifiers/crmProvider/crmLeadDetailsProvider.dart'; import 'package:generp/Notifiers/crmProvider/editProductListProvider.dart'; import 'package:generp/Utils/commonServices.dart'; import 'package:generp/Utils/dropdownTheme.dart'; import 'package:generp/screens/crm/AppointmentDetails.dart'; import 'package:generp/screens/crm/FollowUpDetails.dart'; import 'package:generp/screens/crm/QuotationDetails.dart'; import 'package:generp/screens/crm/contactDetails.dart'; import 'package:generp/screens/crm/editAccountDetails.dart'; import 'package:generp/screens/crm/followUpUpdateScreen.dart'; import 'package:generp/screens/crm/productDetails.dart'; import 'package:provider/provider.dart'; import '../../Models/crmModels/crmLeadDetailsEditProductsViewResponse.dart'; import '../../Utils/app_colors.dart'; import '../../Utils/commonWidgets.dart'; import '../finance/FileViewer.dart'; import 'editProductsList.dart'; import 'generateQuotationScreen.dart'; class LeadDetailsByMode extends StatefulWidget { final mode; final pageTitleName; final leadId; const LeadDetailsByMode({ super.key, required this.mode, required this.pageTitleName, required this.leadId, }); @override State createState() => _LeadDetailsByModeState(); } class _LeadDetailsByModeState extends State { Map _source = {ConnectivityResult.mobile: true}; final MyConnectivity _connectivity = MyConnectivity.instance; Dropdowntheme ddtheme = Dropdowntheme(); @override void initState() { // TODO: implement initState super.initState(); _connectivity.initialise(); _connectivity.myStream.listen((source) { setState(() => _source = source); }); WidgetsBinding.instance.addPostFrameCallback((timeStamp) { final provider = Provider.of( context, listen: false, ); provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode); }); } @override void dispose() { // TODO: implement dispose super.dispose(); _connectivity.disposeStream(); } @override Widget build(BuildContext context) { switch (_source.keys.toList()[0]) { case ConnectivityResult.mobile: connection = 'Online'; break; case ConnectivityResult.wifi: connection = 'Online'; break; case ConnectivityResult.none: default: connection = 'Offline'; } return (connection == "Online") ? Platform.isAndroid ? WillPopScope( onWillPop: () => onBackPressed(context), child: SafeArea( top: false, bottom: true, child: _scaffold(context), ), ) : _scaffold(context) : NoNetwork(context); } Widget _scaffold(BuildContext context) { return Consumer2( builder: (context, provider, editProvider, child) { var leadDetails = provider.leadDetails; var accDetails = provider.accountDetails; var headings1 = ["Account Manager Name", "Account Created By"]; var subHeadings1 = [ accDetails.accManager ?? "-", accDetails.owner ?? "-", ]; var headings2 = ["Address", "State", "District", "Sub Locality"]; var subHeadings2 = [ leadDetails.address ?? "-", accDetails.state ?? "-", accDetails.district ?? "-", accDetails.subLocality ?? "-", ]; var headings3 = ["Source", "Reference", "Team", "Segment"]; var subHeadings3 = [ accDetails.source ?? "-", accDetails.reference ?? "-", accDetails.team ?? "-", accDetails.segment ?? "-", ]; var headings4 = ["Lead Status", "Last Followup Date", "Lead Age"]; var subHeadings4 = [ leadDetails.status ?? "-", leadDetails.date ?? "-", "${leadDetails.lage ?? "-"} days", ]; // var totalHeadings = []; // var totalSubHeadings = []; // // if (provider.showMoreDetails) { // totalHeadings = [...headings2]; // totalSubHeadings = [...subHeadings2]; // } return Scaffold( resizeToAvoidBottomInset: true, // appBar: appbar2New( // context, // "Lead Details", // provider.resetAll, // InkResponse( // onTap: () { // _showOptionsSheet(context); // }, // child: SvgPicture.asset("assets/svg/ic_more.svg", height: 30), // ), // 0xFFFFFFFF // // ), appBar: AppBar( toolbarHeight: provider.showMoreDetails ? 25 : 40, backgroundColor: Colors.white, automaticallyImplyLeading: false, centerTitle: false, elevation: 2.0, title: SizedBox( child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.center, children: [ InkResponse( onTap: () { provider.resetAll(); Navigator.pop(context, true); }, child: SvgPicture.asset( "assets/svg/appbar_back_button.svg", height: 25, ), ), SizedBox(width: 10), Expanded( flex: 4, child: InkResponse( onTap: () { provider.resetAll(); Navigator.pop(context, true); }, child: Text( "Lead Details", overflow: TextOverflow.ellipsis, maxLines: 1, style: TextStyle( fontSize: 16, height: 1.1, fontFamily: "JakartaSemiBold", color: AppColors.semi_black, ), ), ), ), // Spacer(), // InkResponse( // onTap: () { // _showOptionsSheet(context); // }, // child: SvgPicture.asset( // "assets/svg/ic_more.svg", // height: 30, // ), // ), ], ), ), bottom: PreferredSize( preferredSize: provider.showMoreDetails ? Size.fromHeight( MediaQuery.of(context).size.height * 0.8, ) : Size.fromHeight(120), child: Column( children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 8), child: Divider(thickness: 0.5, color: Color(0xFFD7D7D7)), ), Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.vertical( bottom: Radius.circular(30), ), ), // margin: EdgeInsets.symmetric(vertical: 10, horizontal: 10), padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), child: Column( children: [ Row( children: [ Expanded( flex: 1, child: Container( height: 50, width: 35, child: SvgPicture.asset( "assets/svg/crm/lead_details_ic.svg", ), ), ), SizedBox(width: 10), Expanded( flex: 5, child: SizedBox( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( leadDetails.name ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ], ), ), ), SizedBox(width: 10), if (provider.showEditButton == "1") ...[ Expanded( flex: 1, child: InkResponse( onTap: () async { var res = await Navigator.push( context, MaterialPageRoute( builder: (context) => EditAccountDetails( leadID: leadDetails.id, mode: widget.mode, accountID: leadDetails.accId, companyName: leadDetails.name, ), ), ); if (res == true) { provider.crmLeadDetailsAPIFunction( context, widget.leadId, widget.mode, ); } }, child: Container( height: 32, width: 30, padding: EdgeInsets.all(8.0), child: SvgPicture.asset( "assets/svg/crm/lead_details_edit_ic.svg", ), ), ), ), ], Expanded( flex: 1, child: InkResponse( onTap: () async {}, child: Container( height: 32, width: 30, padding: EdgeInsets.all(8.0), child: SvgPicture.asset( "assets/svg/crm/lead_details_copy_ic.svg", ), ), ), ), ], ), Visibility( visible: provider.showMoreDetails ? true : false, child: Column( children: [ Container( padding: EdgeInsets.symmetric(vertical: 4), child: Row( children: [ Expanded( flex: 3, child: Text( "Account Details", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 6, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(subHeadings1.length, (j) { return Container( padding: EdgeInsets.symmetric(vertical: 7), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( headings1[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( subHeadings1[j] == "" ? "-" : subHeadings1[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ); }), Container( padding: EdgeInsets.symmetric(vertical: 4), child: Row( children: [ Expanded( flex: 3, child: Text( "Address Details", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 6, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(subHeadings2.length, (j) { return Container( padding: EdgeInsets.symmetric(vertical: 7), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( headings2[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( subHeadings2[j] == "" ? "-" : subHeadings2[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ); }), Container( padding: EdgeInsets.symmetric(vertical: 4), child: Row( children: [ Expanded( flex: 3, child: Text( "Source Details", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 6, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(subHeadings3.length, (j) { return Container( padding: EdgeInsets.symmetric(vertical: 7), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( headings3[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( subHeadings3[j] == "" ? "-" : subHeadings3[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ); }), Container( padding: EdgeInsets.symmetric(vertical: 4), child: Row( children: [ Expanded( flex: 3, child: Text( "Lead Details", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 6, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(subHeadings4.length, (j) { return Container( padding: EdgeInsets.symmetric(vertical: 7), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( headings4[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: InkResponse( child: subHeadings4[j] == "Lead Age" ? Tooltip( triggerMode: TooltipTriggerMode.tap, message: "${provider.leadDetails.createdDatetime}", child: Text( subHeadings4[j] == "" ? "-" : subHeadings4[j], style: TextStyle( fontSize: 14, color: Color( 0xFF818181, ), decorationColor: AppColors.grey_semi, decoration: TextDecoration .underline, ), ), ) : Text( subHeadings4[j] == "" ? "-" : subHeadings4[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ), ], ), ); }), ], ), ), InkResponse( onTap: () async { provider.showMoreDetails = !provider.showMoreDetails; }, child: Container( padding: EdgeInsets.symmetric(vertical: 5), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ Text( provider.showMoreDetails ? "Hide Details" : "View Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), Transform.flip( flipY: provider.showMoreDetails ? true : false, child: SvgPicture.asset( "assets/svg/arrow_dropdown.svg", height: 25, width: 20, color: AppColors.app_blue, ), ), ], ), ), ), ], ), ), ], ), ), shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical( bottom: Radius.circular(30), // Adjust the radius as needed ), ), ), backgroundColor: AppColors.scaffold_bg_color, body: SingleChildScrollView( child: Column( children: [ ///product details if(provider.leadProducts.isNotEmpty)...[ Container( padding: EdgeInsets.only(left: 10, right: 10, top: 10), child: Row( children: [ Expanded( child: Text( textAlign: TextAlign.left, "Product Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_thick, ), ), ), Expanded( child: InkResponse( onTap: () async { editProvider.resetForm(); await editProvider.crmLeadDetailsEditProductsViewAPIFunction(context, provider.leadDetails.id!); _showAddEditProductsSheet(context,widget.mode, "add", ""); }, child: Text( textAlign: TextAlign.right, "+ Add Product", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), ), ), ], ), ), SizedBox( width: double.infinity, height: 130, child: ListView.builder( physics: AlwaysScrollableScrollPhysics(), shrinkWrap: true, scrollDirection: Axis.horizontal, padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), itemCount: provider.leadProducts.length, itemBuilder: (context, lp) { return InkResponse( onTap: () async { // var res = await Navigator.push( // context, // MaterialPageRoute( // builder: // (context) => EditProductsList( // leadID: provider.leadDetails.id ?? "", // ), // ), // ); await editProvider.crmLeadDetailsEditProductsViewAPIFunction(context, provider.leadDetails.id!); editProvider.addEditProductPriceController.text = provider.leadProducts[lp].price!; editProvider.addEditQuantityController.text = provider.leadProducts[lp].qty!; editProvider.addEditTotalAmountController.text = provider.leadProducts[lp].prodTotalPrice!; editProvider.selectedProducts = editProvider.productsList.firstWhere( (product) => product.id == provider.leadProducts[lp].productId ); editProvider.selectedAddEditProductId = provider.leadProducts[lp].productId!; editProvider.selectedAddEditProductName = provider.leadProducts[lp].productName!; _showAddEditProductsSheet(context,widget.mode, "edit", provider.leadProducts[lp].id); }, child: Container( height: 130, width: MediaQuery.of(context).size.width * 0.95, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 8, ), margin: EdgeInsets.symmetric( horizontal: 5, // vertical: 10, ), child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/crm/product_details_ic.svg", ), ), SizedBox(width: 10), Expanded( flex: 6, child: SizedBox( child: Column( // mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 4, child: Text( provider .leadProducts[lp] .productName ?? "-", maxLines: 2, overflow: TextOverflow.ellipsis, style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( flex: 2, child: Text( textAlign: TextAlign.right, "₹${provider.leadProducts[lp].price ?? "-"}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ), ], ), Text( "x ${provider.leadProducts[lp].qty ?? "-"}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_semi, ), ), SizedBox(height: 5), DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), SizedBox(height: 5), Text( "₹${provider.leadProducts[lp].prodTotalPrice ?? " - "}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ], ), ), ), ], ), ), ); }, ), ), ], ///contact details if(provider.contactDetails.isNotEmpty)...[ Container( padding: EdgeInsets.only(left: 10, right: 10, top: 10), child: Row( children: [ Expanded( child: Text( textAlign: TextAlign.left, "Contact Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_thick, ), ), ), Expanded( child: InkResponse( onTap: () { _showAddContactSheet(context); }, child: Text( textAlign: TextAlign.right, "+ Add Contact", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), ), ), ], ), ), ListView.builder( physics: NeverScrollableScrollPhysics(), shrinkWrap: true, padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), itemCount: provider.contactDetails.length, itemBuilder: (context, lp) { return InkResponse( onTap: () async { provider.editNameController.text = provider.contactDetails[lp].name ?? ""; provider.editDesignationController.text = provider.contactDetails[lp].designation ?? ""; provider.editMobileNumberController.text = provider.contactDetails[lp].mob1 ?? ""; provider.editAlternativeMobileController.text = provider.contactDetails[lp].mob2 ?? ""; provider.editTelephoneController.text = provider.contactDetails[lp].tel ?? ""; provider.editEmailController.text = provider.contactDetails[lp].email ?? ""; _showEditContactSheet(context, lp); }, child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 10, ), margin: EdgeInsets.symmetric(vertical: 5), child: Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/crm/contact_details_ic.svg", ), ), SizedBox(width: 10), Expanded( flex: 6, child: SizedBox( child: Column( // mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 4, child: Text( provider.contactDetails[lp].name ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( flex: 2, child: Text( textAlign: TextAlign.right, "${provider.contactDetails[lp].mob1 ?? "-"}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), ), ], ), Text( "${provider.contactDetails[lp].email ?? "-"}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_semi, ), ), ], ), ), ), ], ), ), ); }, ), ], ///Followup details if (provider.followupDetails.isNotEmpty) ...[ Container( padding: EdgeInsets.only(left: 10, right: 10, top: 10), child: Row( children: [ Expanded( child: Text( textAlign: TextAlign.left, "Followup Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_thick, ), ), ), Expanded( child: InkResponse( onTap: () async { var res = await Navigator.push( context, MaterialPageRoute( builder: (context) => Followupupdatescreen( leadID: provider.leadDetails.id, mode: widget.mode, ), settings: RouteSettings( name: 'Followupupdatescreen', ), ), ); }, child: Text( textAlign: TextAlign.right, "+ Follow up Update", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), ), ), ], ), ), SizedBox( width: double.infinity, height: 250, child: ListView.builder( physics: AlwaysScrollableScrollPhysics(), shrinkWrap: true, scrollDirection: Axis.horizontal, padding: EdgeInsets.symmetric( vertical: 10, horizontal: 10, ), itemCount: provider.followupDetails.length, itemBuilder: (context, lp) { return Container( height: 250, width: MediaQuery.of(context).size.width * 0.95, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 10, ), margin: EdgeInsets.symmetric(horizontal: 5), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/crm/followup_details_ic.svg", ), ), SizedBox(width: 10), Expanded( flex: 6, child: SizedBox( child: Column( // mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 4, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( provider .followupDetails[lp] .ename ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors .semi_black, ), ), Text( provider .followupDetails[lp] .fdate ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_semi, ), ), ], ), ), Expanded( flex: 2, child: Container( decoration: BoxDecoration( borderRadius: BorderRadius.circular( 8, ), color: Color(0xFFF3FFD5), ), padding: EdgeInsets.symmetric( horizontal: 5, vertical: 10, ), child: Center( child: Text( textAlign: TextAlign.right, "${provider.followupDetails[lp].fstatus ?? "-"}", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: Color( 0xFF586000, ), ), ), ), ), ), ], ), ], ), ), ), ], ), Container( padding: EdgeInsets.symmetric(vertical: 10), child: Row( children: [ Expanded( flex: 2, child: Text( "Time", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 7, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(2, (j) { final heads = ["In Time", "Out Time"]; final subHeads = [ provider.followupDetails[lp].finTime ?? "-", provider.followupDetails[lp].foutTime ?? "-", ]; return Container( padding: EdgeInsets.symmetric(vertical: 3), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textAlign: TextAlign.left, heads[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( textAlign: TextAlign.right, subHeads[j] == "" ? "-" : subHeads[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ); }), Container( padding: EdgeInsets.symmetric(vertical: 10), child: Row( children: [ Expanded( flex: 2, child: Text( "Remarks", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 7, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textAlign: TextAlign.left, "Feedback", style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( textAlign: TextAlign.right, provider .followupDetails[lp] .ffeedback == "" ? "-" : provider .followupDetails[lp] .ffeedback ?? "-", maxLines: 2, style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ), ], ), ); }, ), ), ], ///Appointment details if(provider.appointmentDetails.isNotEmpty)...[ Container( padding: EdgeInsets.only(left: 10, right: 10, top: 10), child: Row( children: [ Expanded( child: Text( textAlign: TextAlign.left, "Appointment Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_thick, ), ), ), Expanded( child: InkResponse( onTap: () { _showAddAppointmentSheet(context); }, child: Text( textAlign: TextAlign.right, "+ Add Appointment", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), ), ), ], ), ), SizedBox( width: double.infinity, height: 250, child: ListView.builder( physics: AlwaysScrollableScrollPhysics(), shrinkWrap: true, scrollDirection: Axis.horizontal, padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), itemCount: provider.appointmentDetails.length, itemBuilder: (context, lp) { return Container( height: 250, width: MediaQuery.of(context).size.width * 0.95, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 10, ), margin: EdgeInsets.symmetric(horizontal: 5), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/crm/appointment_details_ic.svg", ), ), SizedBox(width: 10), Expanded( flex: 6, child: SizedBox( child: Column( // mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 4, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( provider .appointmentDetails[lp] .ename ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), Text( provider .appointmentDetails[lp] .adate ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_semi, ), ), ], ), ), ], ), ], ), ), ), ], ), Container( padding: EdgeInsets.symmetric(vertical: 10), child: Row( children: [ Expanded( flex: 3, child: Text( "Engagement", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 7, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(2, (j) { final headsa = ["Type", "Executed"]; final subHeadsa = [ provider.appointmentDetails[lp].atype ?? "-", provider.appointmentDetails[lp].astatus ?? "-", ]; return Container( padding: EdgeInsets.symmetric(vertical: 3), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textAlign: TextAlign.left, headsa[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( textAlign: TextAlign.right, subHeadsa[j] == "" ? "-" : subHeadsa[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ); }), Container( padding: EdgeInsets.symmetric(vertical: 10), child: Row( children: [ Expanded( flex: 2, child: Text( "Remarks", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 7, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), Container( padding: EdgeInsets.symmetric(vertical: 3), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textAlign: TextAlign.left, "Note", style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), Expanded( child: Text( textAlign: TextAlign.right, provider.appointmentDetails[lp].anote == "" ? "-" : provider .appointmentDetails[lp] .anote ?? "-", maxLines: 2, style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ), ), ], ), ); }, ), ), ], ///Quotation details if(provider.quotationsDetails.isNotEmpty)...[ Container( padding: EdgeInsets.only(left: 10, right: 10, top: 10), child: Row( children: [ Expanded( child: Text( textAlign: TextAlign.left, "Quotation Details", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_thick, ), ), ), Expanded( child: InkResponse( onTap: () async { var res = await Navigator.push( context, MaterialPageRoute( builder: (context) => Generatequotationscreen( leadId: provider.leadDetails.id, ), ), ); if (res == true) { provider.crmLeadDetailsAPIFunction( context, provider.leadDetails.id, widget.mode, ); } }, child: Text( textAlign: TextAlign.right, "+ Generate Quotation", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.app_blue, ), ), ), ), ], ), ), SizedBox( width: double.infinity, height: 200, child: ListView.builder( physics: AlwaysScrollableScrollPhysics(), shrinkWrap: true, scrollDirection: Axis.horizontal, padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), itemCount: provider.appointmentDetails.length, itemBuilder: (context, lp) { return Container( height: 200, width: MediaQuery.of(context).size.width * 0.95, decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(14), ), padding: EdgeInsets.symmetric( horizontal: 10, vertical: 10, ), margin: EdgeInsets.symmetric(horizontal: 5), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( flex: 1, child: SvgPicture.asset( "assets/svg/crm/quotation_details_ic.svg", ), ), SizedBox(width: 10), Expanded( flex: 6, child: SizedBox( child: Column( // mainAxisAlignment: MainAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( children: [ Expanded( flex: 4, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( provider .quotationsDetails[lp] .employee ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.semi_black, ), ), Text( provider .quotationsDetails[lp] .id ?? "-", style: TextStyle( fontFamily: "JakartaMedium", fontSize: 14, color: AppColors.grey_semi, ), ), ], ), ), ], ), ], ), ), ), ], ), Container( padding: EdgeInsets.symmetric(vertical: 10), child: Row( children: [ Expanded( flex: 4, child: Text( "Quotation Details", style: TextStyle( fontSize: 14, fontFamily: "JakartaSemiBold", ), ), ), Expanded( flex: 7, child: DottedLine( dashGapLength: 4, dashGapColor: Colors.white, dashColor: AppColors.grey_semi, dashLength: 2, lineThickness: 0.5, ), ), ], ), ), ...List.generate(2, (j) { final headsa = ["File Attached", "Info"]; final subHeadsa = [ "View", provider.quotationsDetails[lp].info ?? "-", ]; return Container( padding: EdgeInsets.symmetric(vertical: 3), child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Expanded( child: Text( textAlign: TextAlign.left, headsa[j], style: TextStyle( fontFamily: "JakartaRegular", fontSize: 14, color: AppColors.semi_black, ), ), ), if (subHeadsa[j] == "View") ...[ Expanded( child: Text( textAlign: TextAlign.right, subHeadsa[j] == "" ? "-" : subHeadsa[j], style: TextStyle( fontSize: 14, color: AppColors.app_blue, decorationColor: AppColors.app_blue, decoration: TextDecoration.underline, ), ), ), ] else ...[ Expanded( child: Text( textAlign: TextAlign.right, subHeadsa[j] == "" ? "-" : subHeadsa[j], style: TextStyle( fontSize: 14, color: Color(0xFF818181), ), ), ), ], ], ), ); }), ], ), ); }, ), ), ], SizedBox(height: 75), ], ), ), ); }, ); } Future _showAddAppointmentSheet(BuildContext context) { 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 Appointment", style: TextStyle( color: AppColors.app_blue, fontSize: 16, ), ), ), TextWidget(context, "Appointment Date"), GestureDetector( onTap: () { provider.showDatePickerDialog(context); }, child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded( child: Container( height: 50, alignment: Alignment.center, decoration: BoxDecoration( color: AppColors.text_field_color, borderRadius: BorderRadius.circular(14), ), child: Padding( padding: const EdgeInsets.fromLTRB( 10.0, 0.0, 10, 0, ), child: TextFormField( controller: provider.dateController, keyboardType: TextInputType.text, enabled: false, maxLines: 1, readOnly: true, onChanged: (value) {}, decoration: InputDecoration( hintText: "Enter Date", hintStyle: TextStyle( fontWeight: FontWeight.w400, color: Color(0xFFB4BEC0), fontSize: 14, ), enabledBorder: InputBorder.none, disabledBorder: InputBorder.none, focusedBorder: InputBorder.none, ), ), ), ), ), ], ), ), errorWidget(context, provider.dateError), DropdownButtonHideUnderline( child: Row( children: [ Expanded( child: DropdownButton2( isExpanded: true, hint: const Row( children: [ Expanded( child: Text( 'Select Account', style: TextStyle(fontSize: 14), overflow: TextOverflow.ellipsis, ), ), ], ), items: provider.visitTypes .map( (vt) => DropdownMenuItem( value: vt, child: Text( vt, style: const TextStyle( fontSize: 14, ), overflow: TextOverflow.ellipsis, ), ), ) .toList(), value: provider.selectedVisitType, onChanged: (value) { if (value != null) { provider.selectedVisitType = value; print( "statusId:${provider.selectedVisitType}", ); } }, buttonStyleData: ddtheme.buttonStyleData, iconStyleData: ddtheme.iconStyleData, menuItemStyleData: ddtheme.menuItemStyleData, dropdownStyleData: ddtheme.dropdownStyleData, ), ), ], ), ), errorWidget(context, provider.visitTypeError), textControllerWidget( context, provider.noteController, "Note", "Enter Note", provider.onChangeNote, TextInputType.text, false, null, ), errorWidget(context, provider.noteError), InkWell( onTap: provider.isLoading ? null : () { provider.isLoading = true; provider .crmLeadDetailsAddAppointmentAPIFunction( context, provider.leadDetails.id, provider.dateController.text, provider.selectedVisitType, provider.noteController.text, ); }, child: Container( alignment: Alignment.center, height: 45, 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 _showAddContactSheet(BuildContext context) { 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, "Name", "Enter Name", provider.onChangeName, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.nameError), textControllerWidget( context, provider.designationController, "Designation", "Enter Designation", provider.onChangeDesignation, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.designationError), textControllerWidget( context, provider.mobileNumberController, "Mobile Number", "Enter Mobile Number", provider.onChangeMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.mobileNumError), textControllerWidget( context, provider.alternativeMobileController, "Alternative Mobile Number", "Enter Alternative Mobile Number", provider.onChangeAltMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.altMobError), textControllerWidget( context, provider.telephoneController, "Telephone Number", "Enter Telephone Number", provider.onChangeTelephone, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.teleError), textControllerWidget( context, provider.emailController, "Email ID", "Enter Email ID", provider.onChangeEmailId, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.emailError), InkWell( onTap: provider.isLoading ? null : () { provider.isLoading = true; provider .crmLeadDetailsAddContactAPIFunction( context, provider.leadDetails.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) { 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, "Name", "Enter Name", provider.onChangeEditName, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editNameError), textControllerWidget( context, provider.editDesignationController, "Designation", "Enter Designation", provider.onChangeEditDesignation, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editDesignationError), textControllerWidget( context, provider.editMobileNumberController, "Mobile Number", "Enter Mobile Number", provider.onChangeEditMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editMobileNumError), textControllerWidget( context, provider.editAlternativeMobileController, "Alternative Mobile Number", "Enter Alternative Mobile Number", provider.onChangeEditAltMobile, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editAltMobError), textControllerWidget( context, provider.editTelephoneController, "Telephone Number", "Enter Telephone Number", provider.onChangeEditTelephone, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editTeleError), textControllerWidget( context, provider.editEmailController, "Email ID", "Enter Email ID", provider.onChangeEditEmailId, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), errorWidget(context, provider.editEmailError), InkWell( onTap: provider.isLoading ? null : () { provider.isLoading = true; provider .crmLeadDetailsEditContactAPIFunction( context, provider.contactDetails[index].id, ); }, 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 _showOptionsSheet(BuildContext context) { 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) { final assetnames = [ "crm_appoint_details", "crm_cont_details", "crm_follow_up_details", "crm_prod_details", "crm_quotation_details", ]; final Headingnames = [ "Product Details", "Contact Details", "Followup Details", "Appointment Details", "Quotation Details", ]; 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( mainAxisSize: MainAxisSize.min, children: [ SizedBox(height: 15), ...List.generate(assetnames.length, (index) { return ListTile( onTap: () { Navigator.pop(context, true); switch (index) { case 0: Navigator.push( context, MaterialPageRoute( builder: (context) => Productdetails( leadID: provider.leadDetails.id, mode: widget.mode, ), ), ); break; case 1: Navigator.push( context, MaterialPageRoute( builder: (context) => Contactdetails( accID: provider.leadDetails.accId, ), ), ); break; case 2: Navigator.push( context, MaterialPageRoute( builder: (context) => FollowUpDetails(), ), ); break; case 3: Navigator.push( context, MaterialPageRoute( builder: (context) => AppointmentDetails( leadID: provider.leadDetails.id, ), ), ); break; case 4: Navigator.push( context, MaterialPageRoute( builder: (context) => QuotationDetails( leadID: provider.leadDetails.id, mode: widget.mode, ), ), ); default: print("object"); } }, leading: SvgPicture.asset( "assets/svg/${assetnames[index]}.svg", ), title: Text( Headingnames[index], style: TextStyle(fontFamily: "JakartaMedium"), ), trailing: SvgPicture.asset( "assets/svg/arrow_right_new.svg", ), ); }), ], ), ), ); }, ), ); }, ); }, ); } Future _showAddEditProductsSheet( BuildContext context, mode, type, leadProductId, ) { 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: Consumer2( builder: (context, provider, editProvider, child) { void updatedAmountfun(value){ final price = double.tryParse( editProvider.addEditProductPriceController.text, ) ?? 0; final qty = int.tryParse( editProvider.addEditQuantityController.text, ) ?? 0; editProvider.addEditTotalAmountController.text = (price * qty).toString(); } 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, children: [ Text( type == "add" ? "Add Product" : "Edit Product", style: TextStyle( fontSize: 14, color: AppColors.app_blue, fontFamily: "JakartaMedium", ), ), SizedBox(height: 10,), TextWidget(context, "Product"), DropdownButtonHideUnderline( child: Row( children: [ Expanded( child: DropdownButton2( isExpanded: true, hint: const Text( 'Select Product', style: TextStyle(fontSize: 14), overflow: TextOverflow.ellipsis, ), items: editProvider.productsList .map( ( ord, ) => DropdownMenuItem( value: ord, child: Text( "(Product Name: ${ord.name})", style: const TextStyle( fontSize: 14, ), overflow: TextOverflow.ellipsis, ), ), ) .toList(), // value: editProvider.selectedAddEditProductId != null // ? editProvider.productsList.firstWhere( // (ord) => ord.id == editProvider.selectedProductIds, // orElse: () => editProvider.productsList[0], // ) // : null, value: editProvider.selectedProducts, onChanged: (Products? value) { if (value != null) { editProvider.selectedProducts = value; editProvider.selectedAddEditProductId = value.id; editProvider .selectedAddEditProductName = value.name; // editProvider.updateSelectedProductIds(j, value); // editProvider.selectedProductIds[j] = // value.id?.toString() ?? ''; // editProvider.updateTotalAmount(j); } }, buttonStyleData: ddtheme.buttonStyleData, iconStyleData: ddtheme.iconStyleData, menuItemStyleData: ddtheme.menuItemStyleData, dropdownStyleData: ddtheme.dropdownStyleData, ), ), ], ), ), const SizedBox(height: 10), Row( children: [ Expanded( flex: 2, child: textControllerWidget( context, editProvider.addEditProductPriceController, "Product Price", "Enter Product Price", updatedAmountfun, TextInputType.number, false, null, ), ), ], ), const SizedBox(height: 10), Row( children: [ Expanded( flex: 2, child: textControllerWidget( context, editProvider.addEditQuantityController, "Quantity", "Enter Quantity", updatedAmountfun, TextInputType.number, false, FilteringTextInputFormatter.digitsOnly, ), ), ], ), errorWidget( context, "Note: Submit Quantity as Zero (0) to delete Product", ), const SizedBox(height: 10), Row( children: [ Expanded( flex: 2, child: textControllerWidget( context, editProvider.addEditTotalAmountController, "Amount", "Total Amount", (_) {}, TextInputType.number, true, FilteringTextInputFormatter.digitsOnly, ), ), ], ), // IconButton( // icon: const Icon(Icons.delete), // onPressed: editProvider.editProductPriceControllers.length > 1 // ? () => editProvider.editRemoveRow(j) // : null, // ), InkResponse( onTap: editProvider.submitLoading ? null : () { editProvider .crmLeadDetailsAddEditProductsSubmitAPIFunction( context, mode, provider.leadDetails.id!, type, leadProductId, editProvider .selectedAddEditProductId, ); }, child: Container( height: 45, alignment: Alignment.center, margin: const EdgeInsets.symmetric( horizontal: 0, vertical: 15, ), padding: const EdgeInsets.symmetric( horizontal: 10, vertical: 5, ), decoration: BoxDecoration( color: AppColors.app_blue, borderRadius: BorderRadius.circular(15), ), child: editProvider.submitLoading ? CircularProgressIndicator.adaptive( valueColor: AlwaysStoppedAnimation( AppColors.white, ), ) : const Text( "Submit", style: TextStyle( fontSize: 15, fontFamily: "JakartaMedium", color: Colors.white, ), ), ), ), ], ), ), ); }, ), ); }, ); }, ).whenComplete(() { Provider.of(context).crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode); Provider.of(context).resetForm(); },); } }