Commit 7210793a authored by Sai Srinivas's avatar Sai Srinivas
Browse files

17-09

parent 185e0896
......@@ -397,7 +397,6 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
Widget _buildScreen(BuildContext context) {
return Consumer<crmNearbyOpenLeadsProvider>(
builder: (context, provider, child) {
// {
// return Scaffold(
// backgroundColor: AppColors.scaffold_bg_color,
......@@ -446,7 +445,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
topLeft: Radius.circular(30.0),
topRight: Radius.circular(30.0),
),
child: Container(
child: SizedBox(
height: MediaQuery.of(context).size.height,
child: Stack(
children: [
......@@ -466,8 +465,13 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
),
},
initialCameraPosition: CameraPosition(
target: widget.latitude != null && widget.longitude != null
? LatLng(widget.latitude!, widget.longitude!)
target:
widget.latitude != null &&
widget.longitude != null
? LatLng(
widget.latitude!,
widget.longitude!,
)
: provider.startLocation,
zoom: 14.0,
),
......@@ -480,7 +484,8 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
provider.onCameraMove(context, position);
},
onTap: (position) {
provider.mapController?.hideMarkerInfoWindow(
provider.mapController
?.hideMarkerInfoWindow(
provider.markers.isNotEmpty
? provider.markers.first.markerId
: MarkerId(''),
......@@ -495,7 +500,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
),
),
),
if (provider.isLoading || (provider.markers.isEmpty))...[
if (provider.isLoading || (provider.markers.isEmpty)) ...[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
......@@ -507,12 +512,15 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
SizedBox(height: 16),
Text(
'Loading nearby leads...',
style: TextStyle(fontSize: 16, color: AppColors.app_blue),
style: TextStyle(
fontSize: 16,
color: AppColors.app_blue,
),
),
],
),
)
]
),
],
],
),
),
......@@ -588,7 +596,7 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
vertical: 0,
),
iconSize: 0.0,
initialProgress: provider.currentValue/50,
initialProgress: provider.currentValue / 50,
enabled: true,
foregroundColor: AppColors.app_blue,
segmentDividerColor: Color(0xFFF6F6F8),
......@@ -602,7 +610,10 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
Container(
child: InkWell(
onTap: () {
provider.applyFilter(context, provider.currentValue);
provider.applyFilter(
context,
provider.currentValue,
);
Navigator.pop(context);
},
child: Container(
......
......@@ -122,7 +122,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
element.id!.trim() == editProvider.accountDetails.state!.trim(),
);
if (selectedState != null) {
editProvider.selectedStates = selectedState;
editProvider.selectedStateId = selectedState.id;
editProvider.selectedStateValue = selectedState.name;
......@@ -133,7 +132,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProvider.selectedStateId,
);
}
}
// Prefill district
if (editProvider.districtsList.isNotEmpty &&
......@@ -142,7 +140,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
(element) =>
element.id!.trim() == editProvider.accountDetails.district!.trim(),
);
if (selectedDistrict != null) {
editProvider.selectedDistricts = selectedDistrict;
editProvider.selectedDistrictId = selectedDistrict.id;
editProvider.selectedDistrictValue = selectedDistrict.district;
......@@ -153,19 +150,16 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProvider.selectedDistrictId,
);
}
}
if (editProvider.subLocationsList.isNotEmpty &&
editProvider.accountDetails.subLocality != null) {
final selectedSubLocation = editProvider.subLocationsList.firstWhere(
(element) => element.id == editProvider.accountDetails.subLocality,
);
if (selectedSubLocation != null) {
editProvider.selectedSubLocations = selectedSubLocation;
editProvider.selectedSubLocationId = selectedSubLocation.id;
editProvider.selectedSubLocationValue = selectedSubLocation.subLocality;
}
}
print("Company Name: ${editProvider.editCompanyNameController.text}");
print("Pincode: ${editProvider.pincodeController.text}");
......@@ -240,7 +234,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
"PinCode",
];
var subHeadings2 = [
leadDetails!.address ?? "-",
leadDetails.address ?? "-",
leadDetails.state ?? "-",
leadDetails.district ?? "-",
leadDetails.subLocality ?? "-",
......@@ -254,7 +248,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
leadDetails.segment ?? "-",
];
var headings4 = ["Lead Age"];
var subHeadings4 = ["${leadDetails!.aage ?? "-"} days old"];
var subHeadings4 = ["${leadDetails.aage ?? "-"} days old"];
var leadListNotEmpty = leadsList.isNotEmpty;
var contactNotEmpty = provider.contactList.isNotEmpty;
......@@ -349,7 +343,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child: Column(
children: [
Container(
decoration: BoxDecoration(
color: Colors.white,
......@@ -368,7 +361,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
children: [
Expanded(
flex: 1,
child: Container(
child: SizedBox(
height: 50,
width: 35,
child: SvgPicture.asset(
......@@ -478,7 +471,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...List.generate(subHeadings1.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
padding: EdgeInsets.symmetric(
vertical: 7,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
......@@ -537,7 +532,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...List.generate(subHeadings2.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
padding: EdgeInsets.symmetric(
vertical: 7,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
......@@ -596,7 +593,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...List.generate(subHeadings3.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
padding: EdgeInsets.symmetric(
vertical: 7,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
......@@ -655,7 +654,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
...List.generate(subHeadings4.length, (j) {
return Container(
padding: EdgeInsets.symmetric(vertical: 7),
padding: EdgeInsets.symmetric(
vertical: 7,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
......@@ -671,7 +672,8 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded(
child: subHeadings4[j] == "Lead Age"
child:
subHeadings4[j] == "Lead Age"
? Tooltip(
triggerMode:
TooltipTriggerMode
......@@ -741,7 +743,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
Transform.flip(
flipY:
provider.showMoreDetails ? true : false,
provider.showMoreDetails
? true
: false,
child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
......@@ -829,20 +833,15 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context,
MaterialPageRoute(
builder:
(
context,
) => LeadDetailsByMode(
(context) => LeadDetailsByMode(
mode: "",
pageTitleName:
"Lead Details",
leadId:
widget.leadId,
pageTitleName: "Lead Details",
leadId: widget.leadId,
),
),
);
if (res == true) {
provider
.crmProspectDetailsAPIFunction(
provider.crmProspectDetailsAPIFunction(
context,
widget.leadId,
);
......@@ -927,7 +926,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child: Center(
child: Text(
textAlign: TextAlign.right,
"${leadsList[index].status ?? "-"}",
leadsList[index].status ?? "-",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
......@@ -1041,9 +1040,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
...List.generate(1, (j) {
final textheads = [
"Lead Open / Close",
];
final textheads = ["Lead Open / Close"];
final textSubheads = [
leadsList[index].openStatus ?? "-",
];
......@@ -1079,7 +1076,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
),
],
),
);
......@@ -1146,7 +1142,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if (contactNotEmpty) ...[
Expanded(
child: InkResponse(
onTap:provider.addContactSelected?null: () {
onTap:
provider.addContactSelected
? null
: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
......@@ -1183,16 +1182,24 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
itemCount: provider.contactList.length,
itemBuilder: (context, lp) {
return InkResponse(
onTap:provider.addContactSelected?null: () async {
onTap:
provider.addContactSelected
? null
: () async {
provider.addContactSelected = true;
HapticFeedback.selectionClick();
provider.editNameController.text =
provider.contactList[lp].name ?? "";
provider.editDesignationController.text =
provider.contactList[lp].designation ?? "";
provider
.contactList[lp]
.designation ??
"";
provider.editMobileNumberController.text =
provider.contactList[lp].mob1 ?? "";
provider.editAlternativeMobileController.text =
provider
.editAlternativeMobileController
.text =
provider.contactList[lp].mob2 ?? "";
provider.editTelephoneController.text =
provider.contactList[lp].tel ?? "";
......@@ -1246,11 +1253,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
.name ??
"-",
style: TextStyle(
fontFamily:
"JakartaMedium",
fontFamily: "JakartaMedium",
fontSize: 14,
color:
AppColors.semi_black,
color: AppColors.semi_black,
),
),
),
......@@ -1264,12 +1269,20 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
},
child: Text(
textAlign: TextAlign.right,
"${provider.contactList[lp].mob1 ?? "-"}",
provider
.contactList[lp]
.mob1 ??
"-",
style: TextStyle(
height: 1,
decorationColor: AppColors.grey_thick,
decoration: TextDecoration.underline,
decorationStyle: TextDecorationStyle.dotted,
decorationColor:
AppColors.grey_thick,
decoration:
TextDecoration
.underline,
decorationStyle:
TextDecorationStyle
.dotted,
fontFamily:
"JakartaMedium",
fontSize: 14,
......@@ -1282,8 +1295,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
Text(
provider.contactList[lp].email ==
""
provider.contactList[lp].email == ""
? "-"
: provider
.contactList[lp]
......@@ -1307,7 +1319,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
] else ...[
InkResponse(
onTap:provider.addContactSelected?null: () {
onTap:
provider.addContactSelected
? null
: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
......@@ -1343,11 +1358,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
///Order Details
if (orderNotEmpty) ...[
Container(
padding: EdgeInsets.only(
left: 10,
right: 10,
top: 10,
),
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
child: Row(
children: [
Expanded(
......@@ -1394,8 +1405,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
......@@ -1442,8 +1452,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
flex: 2,
child: Container(
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(8),
borderRadius: BorderRadius.circular(
8,
),
color: Color(0xFFF3FFD5),
),
padding: EdgeInsets.symmetric(
......@@ -1453,7 +1464,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child: Center(
child: Text(
textAlign: TextAlign.right,
"${orderList[index].status ?? "-"}",
orderList[index].status ?? "-",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
......@@ -1466,9 +1477,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
Container(
padding: EdgeInsets.symmetric(
vertical: 3,
),
padding: EdgeInsets.symmetric(vertical: 3),
child: Row(
children: [
Expanded(
......@@ -1537,9 +1546,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
}),
Container(
padding: EdgeInsets.symmetric(
vertical: 4,
),
padding: EdgeInsets.symmetric(vertical: 4),
child: Row(
children: [
Expanded(
......@@ -1618,15 +1625,13 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
textSubheads[j] == ""
? "-"
: textSubheads[j],
overflow:
TextOverflow.ellipsis,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.app_blue,
decorationColor:
AppColors.app_blue,
decoration:
TextDecoration
.underline,
TextDecoration.underline,
),
),
),
......@@ -1646,11 +1651,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
///Payment Details
if (paymentsNotEmpty) ...[
Container(
padding: EdgeInsets.only(
left: 10,
right: 10,
top: 10,
),
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
child: Row(
children: [
Expanded(
......@@ -1687,21 +1688,15 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context,
MaterialPageRoute(
builder:
(
context,
) => Paymentdetailsbymode(
(context) => Paymentdetailsbymode(
mode: "",
pageTitleName:
"Payment Details",
paymentId:
paymentList[index]
.id,
pageTitleName: "Payment Details",
paymentId: paymentList[index].id,
),
),
);
if (res == true) {
provider
.crmProspectDetailsAPIFunction(
provider.crmProspectDetailsAPIFunction(
context,
paymentList[index].id,
);
......@@ -1711,7 +1706,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
height: 200,
width: MediaQuery.of(context).size.width * 0.9,
margin: EdgeInsets.symmetric(vertical: 5,horizontal: 7.5),
margin: EdgeInsets.symmetric(
vertical: 5,
horizontal: 7.5,
),
padding: EdgeInsets.symmetric(
horizontal: 15,
vertical: 10,
......@@ -1783,7 +1781,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
child: Center(
child: Text(
textAlign: TextAlign.right,
"${paymentList[index].paymentType ?? "-"}",
paymentList[index]
.paymentType ??
"-",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
......@@ -1871,9 +1871,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
);
}),
],
),
),
......@@ -2099,7 +2096,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider.crmProspectDetailsAPIFunction(context, widget.leadId);
});
},);
});
}
Future<void> _showEditContactSheet(BuildContext context, index, accid) {
......@@ -2311,7 +2308,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider.crmProspectDetailsAPIFunction(context, widget.leadId);
});
},);
});
}
Future<void> _showTransferAccountSheet(BuildContext context, accID) {
......@@ -2397,10 +2394,10 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
editProsProvider.selectedEmployees =
value;
editProsProvider.selectedEmployeeId =
value!.id!;
value.id!;
editProsProvider
.selectedEmployeeValue =
value!.name!;
value.name!;
}
}
},
......@@ -2526,7 +2523,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider.crmProspectDetailsAPIFunction(context, widget.leadId);
});
},);
});
}
Future<void> _showEditAccountSheet(BuildContext context, accID) {
......@@ -2672,9 +2669,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if (value != null) {
if (provider.statesList.isNotEmpty) {
provider.selectedStates = value;
provider.selectedStateId = value!.id!;
provider.selectedStateId = value.id!;
provider.selectedStateValue =
value!.name!;
value.name!;
if (provider
.districtsList
.isNotEmpty) {
......@@ -2742,9 +2739,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if (provider.districtsList.isNotEmpty) {
provider.selectedDistricts = value;
provider.selectedDistrictId =
value!.id!;
value.id!;
provider.selectedDistrictValue =
value!.district!;
value.district!;
if (provider
.subLocationsList
.isNotEmpty) {
......@@ -2823,9 +2820,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
.isNotEmpty) {
provider.selectedSubLocations = value;
provider.selectedSubLocationId =
value!.id!;
value.id!;
provider.selectedSubLocationValue =
value!.subLocality!;
value.subLocality!;
}
}
},
......@@ -2939,7 +2936,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
);
provider.crmProspectDetailsAPIFunction(context, widget.leadId);
});
},);
});
}
Future<void> _showOptionsSheet(BuildContext context) {
......@@ -3250,9 +3247,8 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
items:
addleadProvider.leadProductsList
.map(
(
ord,
) => DropdownMenuItem<Products>(
(ord) =>
DropdownMenuItem<Products>(
value: ord,
child: Text(
"${ord.name}",
......@@ -3266,8 +3262,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
)
.toList(),
value:
addleadProvider.selectedProducts !=
null
addleadProvider.selectedProducts != null
? addleadProvider.leadProductsList
.firstWhere(
(ord) =>
......@@ -3301,7 +3296,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context,
value.id.toString(),
);
}
},
buttonStyleData: ddtheme.buttonStyleData,
......
......@@ -170,7 +170,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
children: [
Expanded(
flex: 1,
child: Container(
child: SizedBox(
height: 50,
width: 35,
......@@ -353,7 +353,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
if (widget.mode != "executive") {
headings.add("Employee");
}
return Container(
return SizedBox(
height: MediaQuery.of(context).size.height * 0.3,
child: Column(
mainAxisSize: MainAxisSize.min,
......@@ -550,7 +550,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
EdgeInsets.zero,
),
);
}).toList(),
}),
],
],
),
......
......@@ -40,14 +40,14 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
context,
listen: false,
);
if(widget.type == "Add"){
if (widget.type == "Add") {
provider.selectedProducts = null;
provider.selectedProductsId = null;
provider.selectedProductsValue = null;
provider.addProductPriceController.clear();
provider.addQuantityController.clear();
provider.addTotalAmountController.clear();
}else{
} else {
provider.prefillProductForEdit(widget.editIndex!);
}
......@@ -165,7 +165,7 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
onChanged: (Products? value) {
if (value != null) {
provider.selectedProducts = value;
provider.selectedProductsId = value!.id!;
provider.selectedProductsId = value.id!;
provider.selectedProductsValue = value.name;
}
......@@ -177,16 +177,12 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.productSearchController,
provider.productSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.productSearchController,
provider.productSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -194,26 +190,20 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
horizontal: 10,
vertical: 8,
),
hintText:
'Search Product...',
hintText: 'Search Product...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
borderRadius: BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
searchValue.toLowerCase(),
) ??
false;
},
......@@ -293,7 +283,6 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
onTap: () {
HapticFeedback.selectionClick();
if (provider.selectedProducts != null) {
final productData = {
"product_id": provider.selectedProductsId!,
"price": provider.addProductPriceController.text,
......@@ -308,8 +297,6 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
print(provider.getJsonEncodedProducts());
Navigator.pop(context, provider.getJsonEncodedProducts());
}
},
child: Container(
alignment: Alignment.center,
......
......@@ -45,7 +45,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
_nameController.dispose();
_emailController.dispose();
_addressController.dispose();
focusNodes.map((e) => e.dispose(),);
focusNodes.map((e) => e.dispose());
super.dispose();
}
......@@ -80,6 +80,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
const SnackBar(content: Text('Form submitted successfully!')),
);
}
Future<bool> onBackPressed(BuildContext context) async {
if (_currentStep > 0) {
_previousStep();
......@@ -88,6 +89,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
return true;
}
}
@override
void initState() {
super.initState();
......@@ -257,8 +259,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
TextOverflow.ellipsis,
),
),
)
......@@ -294,7 +295,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
null,
focusNodes[0],
focusNodes[1],
TextInputAction.next
TextInputAction.next,
),
errorWidget(context, provider.companynameError),
......@@ -309,7 +310,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
TextInputAction.next,
),
errorWidget(context, provider.nameError),
......@@ -337,10 +338,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.onChangemailId,
TextInputType.emailAddress,
false,
null,focusNodes[3],
null,
focusNodes[3],
focusNodes[4],
TextInputAction.next,
),
errorWidget(context, provider.mailIdError),
......@@ -436,23 +437,37 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.toList(),
// value: provider.selectedSources,
value: provider.sourcesList.isNotEmpty?provider.selectedSources!=null?
provider.sourcesList.firstWhere((element) => element.id==provider.selectedSourcesId,
orElse: () => provider.sourcesList[0],
):null:null,
value:
provider.sourcesList.isNotEmpty
? provider.selectedSources != null
? provider.sourcesList.firstWhere(
(element) =>
element.id ==
provider
.selectedSourcesId,
orElse:
() =>
provider
.sourcesList[0],
)
: null
: null,
onChanged: (Sources? value) {
if (value != null) {
if (provider.sourcesList.isNotEmpty) {
provider.selectedSources = value;
provider.selectedSourcesId =
value!.id!;
value.id!;
provider.selectedSourcesValue =
value!.name!;
value.name!;
if(provider.referencesList.isNotEmpty){
if (provider
.referencesList
.isNotEmpty) {
provider.referencesList.clear();
provider.selectedReferenceId = null;
provider.selectedReferenceValue = null;
provider.selectedReferenceValue =
null;
}
provider
......@@ -468,16 +483,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.sourceSearchController,
provider.sourceSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.sourceSearchController,
provider.sourceSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -485,26 +496,19 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal: 10,
vertical: 8,
),
hintText:
'Search Source...',
hintText: 'Search Source...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
BorderRadius.circular(8),
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
searchValue.toLowerCase(),
) ??
false;
},
......@@ -539,9 +543,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider.referencesList
.map(
(slist) => DropdownMenuItem<
References
>(
(slist) =>
DropdownMenuItem<References>(
value: slist,
child: Text(
slist.name!,
......@@ -553,10 +556,21 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.toList(),
// value: provider.selectedReference,
value: provider.referencesList.isNotEmpty?provider.selectedReference!=null?
provider.referencesList.firstWhere((element) => element.id==provider.selectedReferenceId,
orElse: () => provider.referencesList[0],
):null:null,
value:
provider.referencesList.isNotEmpty
? provider.selectedReference != null
? provider.referencesList.firstWhere(
(element) =>
element.id ==
provider
.selectedReferenceId,
orElse:
() =>
provider
.referencesList[0],
)
: null
: null,
onChanged: (References? value) {
if (value != null) {
if (provider
......@@ -564,9 +578,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
.isNotEmpty) {
provider.selectedReference = value;
provider.selectedReferenceId =
value!.id!;
value.id!;
provider.selectedReferenceValue =
value!.name!;
value.name!;
}
}
},
......@@ -574,12 +588,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.referenceSearchController,
provider.referenceSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
......@@ -591,33 +602,27 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal: 10,
vertical: 8,
),
hintText:
'Search Reference...',
hintText: 'Search Reference...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
BorderRadius.circular(8),
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.referenceSearchController.clear();
provider.referenceSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
......@@ -658,23 +663,34 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.toList(),
// value: provider.selectedTeams,
value: provider.teamsList.isNotEmpty?provider.selectedTeams!=null?
provider.teamsList.firstWhere((element) => element.id==provider.selectedTeamsId,
orElse: () => provider.teamsList[0],
):null:null,
value:
provider.teamsList.isNotEmpty
? provider.selectedTeams != null
? provider.teamsList.firstWhere(
(element) =>
element.id ==
provider.selectedTeamsId,
orElse:
() =>
provider.teamsList[0],
)
: null
: null,
onChanged: (Teams? value) {
if (value != null) {
if (provider.teamsList.isNotEmpty) {
provider.selectedTeams = value;
provider.selectedTeamsId =
value!.id!;
provider.selectedTeamsId = value.id!;
provider.selectedTeamsValue =
value!.name!;
value.name!;
if(provider.segmentsList.isNotEmpty){
if (provider
.segmentsList
.isNotEmpty) {
provider.segmentsList.clear();
provider.selectedSegmentId = null;
provider.selectedSegmentValue = null;
provider.selectedSegmentValue =
null;
}
provider
.crmLeadListSegmentOnTeamAPIFunction(
......@@ -689,16 +705,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.teamSearchController,
provider.teamSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.teamSearchController,
provider.teamSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -706,26 +718,19 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal: 10,
vertical: 8,
),
hintText:
'Search Team...',
hintText: 'Search Team...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
BorderRadius.circular(8),
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
searchValue.toLowerCase(),
) ??
false;
},
......@@ -773,20 +778,29 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
)
.toList(),
// value: provider.selectedSegment,
value: provider.segmentsList.isNotEmpty?provider.selectedSegment!=null?
provider.segmentsList.firstWhere((element) => element.id==provider.selectedSegmentId,
orElse: () => provider.segmentsList[0],
):null:null,
value:
provider.segmentsList.isNotEmpty
? provider.selectedSegment != null
? provider.segmentsList.firstWhere(
(element) =>
element.id ==
provider
.selectedSegmentId,
orElse:
() =>
provider
.segmentsList[0],
)
: null
: null,
onChanged: (Segments? value) {
if (value != null) {
if (provider
.segmentsList
.isNotEmpty) {
if (provider.segmentsList.isNotEmpty) {
provider.selectedSegment = value;
provider.selectedSegmentId =
value!.id!;
value.id!;
provider.selectedSegmentValue =
value!.name!;
value.name!;
}
}
},
......@@ -794,16 +808,12 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.segmentSearchController,
provider.segmentSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.segmentSearchController,
provider.segmentSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
......@@ -811,33 +821,27 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
horizontal: 10,
vertical: 8,
),
hintText:
'Search Segment...',
hintText: 'Search Segment...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
BorderRadius.circular(8),
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.segmentSearchController.clear();
provider.segmentSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
......@@ -882,17 +886,15 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
context,
MaterialPageRoute(
builder:
(context) => Addleadproductscreen(
type: "Add",
),
(context) =>
Addleadproductscreen(type: "Add"),
settings: RouteSettings(
name:
'Generatequotationaddeditproduct',
name: 'Generatequotationaddeditproduct',
),
),
);
if (res != null) {
print("result ${res}");
print("result $res");
}
},
child: Container(
......@@ -944,8 +946,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
)
.name;
final prodPrice =
product['price'] ?? '-';
final prodPrice = product['price'] ?? '-';
final prodQty = product['qty'] ?? '-';
final totalPrice =
product['net_price'] ?? '-';
......@@ -968,7 +969,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
);
if (res != null) {
print("result ${res}");
print("result $res");
}
},
child: Container(
......@@ -995,8 +996,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
decoration: BoxDecoration(
color: Color(0xFFE6F6FF),
borderRadius:
BorderRadius.circular(14),
borderRadius: BorderRadius.circular(
14,
),
),
child: Row(
mainAxisAlignment:
......@@ -1015,8 +1017,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
flex: 6,
child: Column(
crossAxisAlignment:
CrossAxisAlignment
.start,
CrossAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
......@@ -1025,8 +1026,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
Expanded(
flex: 4,
child: Text(
productName ??
"-",
productName ?? "-",
maxLines: 2,
overflow:
TextOverflow
......@@ -1045,8 +1045,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
flex: 3,
child: Text(
textAlign:
TextAlign
.right,
TextAlign.right,
"₹$prodPrice",
style: TextStyle(
fontFamily:
......@@ -1067,8 +1066,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
"JakartaMedium",
fontSize: 14,
color:
AppColors
.grey_semi,
AppColors.grey_semi,
),
),
SizedBox(height: 5),
......@@ -1112,11 +1110,14 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
),
],
if(provider.productRows.isEmpty)...[
if(provider.productsEmptyError!=null)...[
errorWidget(context, provider.productsEmptyError)
]
]
if (provider.productRows.isEmpty) ...[
if (provider.productsEmptyError != null) ...[
errorWidget(
context,
provider.productsEmptyError,
),
],
],
],
),
),
......@@ -1147,9 +1148,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider.statesList
.map(
(slist) => DropdownMenuItem<
States
>(
(slist) =>
DropdownMenuItem<States>(
value: slist,
child: Text(
slist.name!,
......@@ -1166,7 +1166,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.statesList.isNotEmpty
? provider.selectedStates !=
null
? provider.statesList!.firstWhere(
? provider.statesList.firstWhere(
(ord) =>
ord.id ==
provider
......@@ -1174,7 +1174,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
() =>
provider
.statesList![0]!,
.statesList[0],
)
: null
: null,
......@@ -1185,31 +1185,32 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
.isNotEmpty) {
provider.selectedStates = value;
provider.selectedStatesId =
value!.id!;
value.id!;
provider.selectedStatesValue =
value!.name!;
value.name!;
provider
.crmLeadListDistrictsOnStateAPIFunction(
context,
"",
value!.id!,
value.id!,
);
if (provider
.districtsList
.isNotEmpty) {
provider.districtsList
provider.districtsList.clear();
provider.subLocationsList
.clear();
provider.subLocationsList.clear();
// provider.selectedDistricts = null;
provider.selectedDistrictId =
null;
provider.selectedDistrictValue =
"";
provider.selectedSubLocationId = null;
provider.selectedSubLocationValue = "";
provider.selectedSubLocationId =
null;
provider.selectedSubLocationValue =
"";
}
}
}
},
......@@ -1259,8 +1260,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.districtsList.isNotEmpty
? provider.selectedDistricts !=
null
? provider.districtsList!
.firstWhere(
? provider.districtsList.firstWhere(
(ord) =>
ord.id ==
provider
......@@ -1268,7 +1268,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
() =>
provider
.districtsList![0]!,
.districtsList[0],
)
: null
: null,
......@@ -1280,14 +1280,14 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.selectedDistricts =
value;
provider.selectedDistrictId =
value!.id!;
value.id!;
provider.selectedDistrictValue =
value!.district!;
value.district!;
provider
.crmLeadListSubLocOnDistrictAPIFunction(
context,
"",
value!.id!,
value.id!,
);
if (provider
.subLocationsList
......@@ -1301,7 +1301,6 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.selectedSubLocationValue =
"";
}
}
}
},
......@@ -1348,13 +1347,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
// value: provider.selectedSubLocations,
value:
provider
.subLocationsList
.isNotEmpty
provider.subLocationsList.isNotEmpty
? provider.selectedSubLocations !=
null
? provider
.subLocationsList!
? provider.subLocationsList
.firstWhere(
(ord) =>
ord.id ==
......@@ -1363,7 +1359,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
orElse:
() =>
provider
.subLocationsList![0]!,
.subLocationsList[0],
)
: null
: null,
......@@ -1375,9 +1371,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.selectedSubLocations =
value;
provider.selectedSubLocationId =
value!.id!;
value.id!;
provider.selectedSubLocationValue =
value!.subLocality!;
value.subLocality!;
}
}
},
......@@ -1407,11 +1403,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
Expanded(
child: Text(
'Select Lead Status',
style: TextStyle(
fontSize: 14,
),
overflow:
TextOverflow.ellipsis,
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
),
],
......@@ -1419,9 +1412,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
<String>['Cold', 'Hot', 'Warm']
.map(
(value) => DropdownMenuItem<
String
>(
(
value,
) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -1429,8 +1422,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
TextOverflow.ellipsis,
),
),
)
......@@ -1521,7 +1513,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
onTap: () {
HapticFeedback.selectionClick();
if (provider.validateStep3()) {
if(provider.productRows.isNotEmpty){
if (provider.productRows.isNotEmpty) {
provider.crmAddNewLeadsAndProspectsAPIFunction(
context,
"",
......@@ -1537,10 +1529,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.selectedLeadStatus,
provider.getJsonEncodedProducts(),
);
}else{
} else {
toast(context, "Add min. 1 product");
}
}
details.onStepContinue;
......
......@@ -114,7 +114,8 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
items:
editProvider.employeeList
.map(
(slist) => DropdownMenuItem<LeadEmployees>(
(slist) =>
DropdownMenuItem<LeadEmployees>(
value: slist,
child: Text(
slist.name!,
......@@ -135,9 +136,9 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
if (value != null) {
if (editProvider.employeeList.isNotEmpty) {
editProvider.selectedEmployee = value;
editProvider.selectedEmployeeId = value!.id!;
editProvider.selectedEmployeeId = value.id!;
editProvider.selectedEmployeeValue =
value!.name!;
value.name!;
}
}
},
......
......@@ -261,7 +261,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
children: [
Expanded(
flex: 1,
child: Container(
child: SizedBox(
height: 50,
width: 35,
child: SvgPicture.asset(
......@@ -341,9 +341,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
decoration: BoxDecoration(
color: AppColors.scaffold_bg_color,
),
child: Center(
child: Text("No Data Available"),
),
child: Center(child: Text("No Data Available")),
),
),
],
......@@ -459,7 +457,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
),
),
const SizedBox(height: 8),
Container(
SizedBox(
height: 70, // Increased height to accommodate weekday text
child: ListView.builder(
controller: scrollController,
......
......@@ -192,7 +192,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
if (provider.allLeads.length > 0) ...[
if (provider.allLeads.isNotEmpty) ...[
Container(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
margin: EdgeInsets.only(bottom: 10),
......@@ -274,7 +274,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
MaterialPageRoute(
builder:
(context) => Leadlistbymode(
pageTitleName: "${leadTitles[jndex]}",
pageTitleName: leadTitles[jndex],
mode:
provider
.allLeads[jndex]
......@@ -527,8 +527,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
builder:
(context) => Leadlistbymode(
mode: "executive",
pageTitleName:
"Lead List",
pageTitleName: "Lead List",
),
),
);
......@@ -948,7 +947,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
],
if (provider.pendingTasksLists.length > 0) ...[
if (provider.pendingTasksLists.isNotEmpty) ...[
Align(
alignment: Alignment.centerLeft,
child: Padding(
......@@ -1003,7 +1002,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
),
),
Container(
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
......
......@@ -17,14 +17,19 @@ class EditAccountDetails extends StatefulWidget {
final accountID;
final companyName;
const EditAccountDetails({super.key,required this.leadID,required this.mode,required this.accountID,required this.companyName});
const EditAccountDetails({
super.key,
required this.leadID,
required this.mode,
required this.accountID,
required this.companyName,
});
@override
State<EditAccountDetails> createState() => _EditAccountDetailsState();
}
class _EditAccountDetailsState extends State<EditAccountDetails> {
Dropdowntheme ddtheme = Dropdowntheme();
@override
void initState() {
......@@ -36,7 +41,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
listen: false,
);
provider.editCompanyNameController.text = widget.companyName!;
provider.crmLeadDetailsEditAccountAPIFunction(context, widget.leadID, widget.mode);
provider.crmLeadDetailsEditAccountAPIFunction(
context,
widget.leadID,
widget.mode,
);
});
}
......@@ -48,25 +57,23 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: Platform.isIOS?false:true,
bottom: Platform.isIOS ? false : true,
child: Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbar(context, "Edit Account"),
backgroundColor: AppColors.scaffold_bg_color,
body: Container(
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10),
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 10),
margin: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(12.0),
),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
textControllerWidget(
context,
provider.editCompanyNameController,
......@@ -92,14 +99,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
items:
provider.teamsList
.map(
(slist) =>
DropdownMenuItem<Teams>(
(slist) => DropdownMenuItem<Teams>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
),
style: TextStyle(fontSize: 14),
),
),
)
......@@ -107,13 +111,17 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
value: provider.selectedTeams,
onChanged: (Teams? value) {
if (value != null) {
if(provider.teamsList.isNotEmpty){
if (provider.teamsList.isNotEmpty) {
provider.selectedTeams = value;
provider.selectedTeamId = value!.id!;
provider.selectedTeamValue = value!.name!;
provider.crmLeadListSegmentOnTeamAPIFunction(context, widget.mode, provider.selectedTeamId);
provider.selectedTeamId = value.id!;
provider.selectedTeamValue = value.name!;
provider
.crmLeadListSegmentOnTeamAPIFunction(
context,
widget.mode,
provider.selectedTeamId,
);
}
}
},
isExpanded: true,
......@@ -140,14 +148,11 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
items:
provider.segmentsList
.map(
(slist) =>
DropdownMenuItem<Segments>(
(slist) => DropdownMenuItem<Segments>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
),
style: TextStyle(fontSize: 14),
),
),
)
......@@ -155,12 +160,12 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
value: provider.selectedSegments,
onChanged: (Segments? value) {
if (value != null) {
if(provider.segmentsList.isNotEmpty){
if (provider.segmentsList.isNotEmpty) {
provider.selectedSegments = value;
provider.selectedSegmentId = value!.id!;
provider.selectedSegmentValue = value!.name!;
provider.selectedSegmentId = value.id!;
provider.selectedSegmentValue =
value.name!;
}
}
},
isExpanded: true,
......@@ -173,11 +178,20 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
],
),
),
SizedBox(height: 25,),
SizedBox(height: 25),
InkWell(
onTap: provider.isLoading?null:(){
onTap:
provider.isLoading
? null
: () {
provider.isLoading = true;
provider.crmLeadDetailsEditAccountSubmitAPIFunction(context, widget.accountID, provider.selectedSegmentId, provider.selectedTeamId);
provider
.crmLeadDetailsEditAccountSubmitAPIFunction(
context,
widget.accountID,
provider.selectedSegmentId,
provider.selectedTeamId,
);
},
child: Container(
alignment: Alignment.center,
......@@ -193,7 +207,14 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
borderRadius: BorderRadius.circular(14.0),
),
child: Center(
child: provider.isLoading?CircularProgressIndicator.adaptive(valueColor: AlwaysStoppedAnimation(AppColors.white),):Text(
child:
provider.isLoading
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(
AppColors.white,
),
)
: Text(
"Submit",
textAlign: TextAlign.center,
style: TextStyle(color: Colors.white),
......@@ -205,13 +226,10 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
),
),
),
),
),
);
},
);
}
}
......@@ -16,7 +16,7 @@ import 'followUpUpdateScreen.dart';
class Followuplistontype extends StatefulWidget {
final type;
const Followuplistontype({super.key,required this.type});
const Followuplistontype({super.key, required this.type});
@override
State<Followuplistontype> createState() => _FollowuplistontypeState();
......@@ -119,7 +119,7 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
Container(
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
......@@ -132,8 +132,7 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
itemBuilder: (context, index) {
final subHeadings = [
followUps[index].aname ?? "-",
followUps[index].appdate ??
"-",
followUps[index].appdate ?? "-",
followUps[index].anote ?? "-",
];
return InkResponse(
......@@ -142,11 +141,8 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
context,
MaterialPageRoute(
builder:
(context) =>
Followupupdatescreen(
leadID:
followUps[index]
.leadid,
(context) => Followupupdatescreen(
leadID: followUps[index].leadid,
mode: "",
),
settings: RouteSettings(
......@@ -154,8 +150,12 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
),
),
);
if(routeSettingName=="Followupupdatescreen"){
provider.crmDashboardFollowUpAPIFunction(context, widget.type);
if (routeSettingName ==
"Followupupdatescreen") {
provider.crmDashboardFollowUpAPIFunction(
context,
widget.type,
);
}
},
child: Container(
......@@ -187,14 +187,23 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
child: Text(
"${followUps[index].aname}",
maxLines: 1,
overflow: TextOverflow.visible,
overflow:
TextOverflow.visible,
style: TextStyle(
decoration: TextDecoration.underline,
decoration:
TextDecoration
.underline,
height: 1,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
decorationStyle:
TextDecorationStyle
.dotted,
decorationColor: Color(
0xFF676767,
),
color:
AppColors.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......@@ -205,23 +214,31 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.grey_semi,
fontFamily: "JakartaRegular",
color:
AppColors.grey_semi,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
],
),
SizedBox(height: 10,),
SizedBox(height: 10),
Container(
padding: EdgeInsets.symmetric(vertical: 10,horizontal: 10),
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 10,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
gradient: LinearGradient(colors: [
borderRadius:
BorderRadius.circular(16),
gradient: LinearGradient(
colors: [
Color(0xFFFFFFFF),
Color(0xFFE8F7FF)
])
Color(0xFFE8F7FF),
],
),
),
child: Row(
crossAxisAlignment:
......@@ -231,10 +248,13 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
child: Text(
"Remarks",
maxLines: 1,
overflow: TextOverflow.ellipsis,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.app_blue,
fontFamily: "JakartaRegular",
color:
AppColors.app_blue,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......@@ -242,11 +262,15 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
Expanded(
child: Text(
"${followUps[index].anote}",
textAlign: TextAlign.right,
textAlign:
TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
color:
AppColors
.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......
......@@ -15,7 +15,12 @@ class Followupupdatescreen extends StatefulWidget {
final leadID;
final mode;
final from;
const Followupupdatescreen({super.key,required this.leadID, this.mode, this.from});
const Followupupdatescreen({
super.key,
required this.leadID,
this.mode,
this.from,
});
@override
State<Followupupdatescreen> createState() => _FollowupupdatescreenState();
......@@ -26,7 +31,6 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
Map _source = {ConnectivityResult.mobile: true};
final MyConnectivity _connectivity = MyConnectivity.instance;
@override
void initState() {
super.initState();
......@@ -35,7 +39,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
setState(() => _source = event);
});
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
final provider = Provider.of<followUpUpdateProvider>(context,listen: false);
final provider = Provider.of<followUpUpdateProvider>(
context,
listen: false,
);
provider.getCurrentLocation(context);
});
}
......@@ -116,7 +123,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
child: Column(
children: [
Container(
padding: EdgeInsets.only(left: 10,top: 10),
padding: EdgeInsets.only(left: 10, top: 10),
alignment: Alignment.topLeft,
child: Text(
"Follow up Details",
......@@ -154,10 +161,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
child: Row(
children: [
Text(
provider.selectedTime.hour.toString() +
":" +
provider.selectedTime.minute
.toString() ??
"${provider.selectedTime.hour}:${provider.selectedTime.minute}" ??
"Enter in Time",
textAlign: TextAlign.center,
style: TextStyle(fontWeight: FontWeight.w400),
......@@ -188,8 +192,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
items:
<String>['Phone', 'Visit']
.map(
(value) =>
DropdownMenuItem<String>(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -216,8 +219,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if(provider.followupError!=null)...[
errorWidget(context, provider.followupError)
if (provider.followupError != null) ...[
errorWidget(context, provider.followupError),
],
textControllerWidget(
context,
......@@ -229,8 +232,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false,
null,
),
if(provider.followupFeedbackError!=null)...[
errorWidget(context, provider.followupFeedbackError)
if (provider.followupFeedbackError != null) ...[
errorWidget(context, provider.followupFeedbackError),
],
TextWidget(context, "Lead Status"),
DropdownButtonHideUnderline(
......@@ -251,10 +254,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<String>['All','Cold', 'Hot', 'Warm']
<String>['All', 'Cold', 'Hot', 'Warm']
.map(
(value) =>
DropdownMenuItem<String>(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -281,8 +283,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if(provider.leadStatusError!=null)...[
errorWidget(context, provider.leadStatusError)
if (provider.leadStatusError != null) ...[
errorWidget(context, provider.leadStatusError),
],
TextWidget(
context,
......@@ -311,8 +313,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
'Update Order Status',
]
.map(
(value) =>
DropdownMenuItem<String>(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -339,9 +340,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if(provider.appStatusError!=null)...[
errorWidget(context, provider.appStatusError)
]
if (provider.appStatusError != null) ...[
errorWidget(context, provider.appStatusError),
],
],
),
),
......@@ -395,8 +396,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
'No Requirement',
]
.map(
(value) =>
DropdownMenuItem<String>(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -423,13 +423,12 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if(provider.orderStatusError!=null)...[
errorWidget(context, provider.orderStatusError)
if (provider.orderStatusError != null) ...[
errorWidget(context, provider.orderStatusError),
],
if (provider.selectOrderStatus == "Order Gain")
...[]
else
...[
else ...[
if (provider.selectOrderStatus == "Order Lost") ...[
TextWidget(context, "Select Competitor"),
DropdownButtonHideUnderline(
......@@ -485,8 +484,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
newValue!;
});
},
buttonStyleData: ddtheme
.buttonStyleData,
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
......@@ -497,11 +495,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
),
if(provider.competitorError!=null)...[
errorWidget(context, provider.competitorError)
]
] else
if (provider.selectOrderStatus ==
if (provider.competitorError != null) ...[
errorWidget(context, provider.competitorError),
],
] else if (provider.selectOrderStatus ==
"No Requirement")
...[],
textControllerWidget(
......@@ -514,17 +511,16 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false,
null,
),
if(provider.reasonError!=null)...[
errorWidget(context, provider.reasonError)
]
if (provider.reasonError != null) ...[
errorWidget(context, provider.reasonError),
],
],
],
),
),
SizedBox(height: 25),
] else if(provider.nextAppointmentStatus ==
"Next Appointment")
...[
] else if (provider.nextAppointmentStatus ==
"Next Appointment") ...[
Container(
padding: EdgeInsets.only(left: 10),
alignment: Alignment.topLeft,
......@@ -542,8 +538,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
padding: EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
......@@ -591,8 +586,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
),
),
),
if(provider.nextAppDateError!=null)...[
errorWidget(context, provider.nextAppDateError)
if (provider.nextAppDateError != null) ...[
errorWidget(context, provider.nextAppDateError),
],
TextWidget(context, "Appointment Type"),
DropdownButtonHideUnderline(
......@@ -615,8 +610,7 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
items:
<String>['Phone', 'Visit']
.map(
(value) =>
DropdownMenuItem<String>(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
......@@ -637,28 +631,24 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme
.menuItemStyleData,
dropdownStyleData: ddtheme
.dropdownStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
if(provider.nextAppType!=null)...[
errorWidget(context, provider.nextAppType)
if (provider.nextAppType != null) ...[
errorWidget(context, provider.nextAppType),
],
if (provider.selectNextAppointmentType ==
"Visit") ...[
if (provider.selectNextAppointmentType == "Visit") ...[
CheckboxListTile(
activeColor: AppColors.app_blue,
checkboxShape: CircleBorder(),
controlAffinity: ListTileControlAffinity.leading,
value: provider.checked,
contentPadding: EdgeInsets.symmetric(
horizontal: 0),
contentPadding: EdgeInsets.symmetric(horizontal: 0),
title: Text(
"Send SMS reminder to Customer",
style: TextStyle(
......@@ -673,8 +663,9 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
} else {
provider.smsSent = "0";
}
print(provider.smsSent +
provider.checked.toString());
print(
provider.smsSent + provider.checked.toString(),
);
},
),
],
......@@ -688,8 +679,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
false,
null,
),
if(provider.noteError!=null)...[
errorWidget(context, provider.noteError)
if (provider.noteError != null) ...[
errorWidget(context, provider.noteError),
],
],
),
......@@ -703,7 +694,10 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
floatingActionButton: InkResponse(
onTap:provider.submitLoading?null: () {
onTap:
provider.submitLoading
? null
: () {
provider.submitLoading = true;
provider.crmAddFollowUpAPIFunction(
context,
......@@ -716,7 +710,8 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
provider.selectedLeadStatus,
provider.selectNextAppointmentType,
provider.smsSent,
widget.mode);
widget.mode,
);
},
child: Container(
height: 45,
......@@ -727,9 +722,12 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15),
),
child:provider.submitLoading?CircularProgressIndicator.adaptive(
child:
provider.submitLoading
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.white),
): Text(
)
: Text(
"Submit",
style: TextStyle(
fontSize: 15,
......
......@@ -61,11 +61,11 @@ class _GeneratequotationaddeditproductState
if (widget.type == "add") {
// Initialize controllers and dropdowns after API call
provider.addEditInitializeForm(context);
} else if (widget.type == "edit"){
} else if (widget.type == "edit") {
print(widget.index);
print(widget.product);
provider.preFillFormForEdit(widget.product,widget.index);
provider.preFillFormForEdit(widget.product, widget.index);
}
});
}
......@@ -147,9 +147,7 @@ class _GeneratequotationaddeditproductState
items:
provider.productsList
.map(
(
ord,
) => DropdownMenuItem<Products>(
(ord) => DropdownMenuItem<Products>(
value: ord,
child: Text(
"${ord.name}",
......@@ -161,6 +159,7 @@ class _GeneratequotationaddeditproductState
),
)
.toList(),
// provider.selectedOrderIds[index] != null?
// provider
// .orderList
......@@ -171,25 +170,27 @@ class _GeneratequotationaddeditproductState
// provider
// .selectedOrderIds[index],
// )
value:
provider.selectedProducts != null
? provider.productsList.firstWhere(
(element) =>
element.id ==
provider
.selectedAddEditProductId,
provider.selectedAddEditProductId,
)
: null,
onChanged: (Products? value) {
if (value != null) {
provider.selectedProducts = value;
provider.selectedAddEditProductId =
value!.id!;
value.id!;
provider.selectedAddEditProductName =
value.name;
print(value.id.toString());
provider.crmSelectedProductDetailsApiFunction(context, value.id.toString());
provider
.crmSelectedProductDetailsApiFunction(
context,
value.id.toString(),
);
}
},
buttonStyleData: ddtheme.buttonStyleData,
......@@ -261,10 +262,9 @@ class _GeneratequotationaddeditproductState
floatingActionButton: InkWell(
onTap: () {
if (provider.selectedProducts != null) {
var newProduct;
LeadProducts newProduct;
if (widget.type == "add") {
newProduct = LeadProducts(
productId: provider.selectedAddEditProductId,
productName: provider.selectedAddEditProductName,
price: provider.addEditProductPriceController.text,
......@@ -280,7 +280,7 @@ class _GeneratequotationaddeditproductState
"net_price": provider.addEditTotalAmountController.text,
});
Navigator.pop(context, newProduct);
} else if (widget.type == "edit"){
} else if (widget.type == "edit") {
final updatedProduct = LeadProducts(
productId: provider.selectedAddEditProductId,
productName: provider.selectedAddEditProductName,
......
......@@ -176,7 +176,7 @@ class _GeneratequotationscreenState extends State<Generatequotationscreen> {
),
);
if (res != null) {
print("result ${res}");
print("result $res");
// provider
// .crmLeadDetailsGenerateQuoteViewAPIFunction(
......@@ -245,7 +245,7 @@ class _GeneratequotationscreenState extends State<Generatequotationscreen> {
),
);
if (res != null) {
print("result ${res}");
print("result $res");
}
},
child: Container(
......
......@@ -14,7 +14,6 @@ import 'package:provider/provider.dart';
import 'LeadDetailsByMode.dart';
class Generatedquoteslist extends StatefulWidget {
const Generatedquoteslist({super.key});
@override
......@@ -46,9 +45,8 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
_connectivity.disposeStream();
}
getDecorationColor(value){
switch (value){
getDecorationColor(value) {
switch (value) {
case "Hot":
return AppColors.processed_bg_color;
case "Warm":
......@@ -60,8 +58,8 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
}
}
getTextColor(value){
switch (value){
getTextColor(value) {
switch (value) {
case "Hot":
return AppColors.processed_text_color;
case "Warm":
......@@ -73,7 +71,6 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
}
}
@override
Widget build(BuildContext context) {
switch (_source.keys.toList()[0]) {
......@@ -146,7 +143,7 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
Container(
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
......@@ -157,7 +154,6 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
),
itemCount: quotess.length,
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
Navigator.push(
......@@ -183,10 +179,11 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
vertical: 10,
),
child: Row(
children: [
SvgPicture.asset("assets/svg/finance/fin_payments_ic.svg",),
SizedBox(width: 10,),
SvgPicture.asset(
"assets/svg/finance/fin_payments_ic.svg",
),
SizedBox(width: 10),
Expanded(
flex: 4,
child: Text(
......@@ -194,9 +191,11 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.underline,
decoration:
TextDecoration.underline,
height: 1.5,
decorationStyle: TextDecorationStyle.dotted,
decorationStyle:
TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
......@@ -204,21 +203,29 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
),
),
),
SizedBox(width: 10,),
SizedBox(width: 10),
Expanded(
flex: 2,
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
padding: EdgeInsets.symmetric(
vertical: 5,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: getDecorationColor(quotess[index].lstatus)
borderRadius: BorderRadius.circular(
8,
),
color: getDecorationColor(
quotess[index].lstatus,
),
),
child: Text(
"${quotess[index].lstatus}",
textAlign: TextAlign.center,
maxLines: 1,
style: TextStyle(
color: getTextColor(quotess[index].lstatus),
color: getTextColor(
quotess[index].lstatus,
),
fontFamily: "JakartaRegular",
fontSize: 14,
),
......
......@@ -176,21 +176,26 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
children: [
Expanded(
child: Text(
"${subHeadings[j]}",
subHeadings[j],
style: TextStyle(
decoration:j == 0
? TextDecoration.underline:TextDecoration.none,
height: j == 0
? 1:1.5,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
decoration:
j == 0
? TextDecoration
.underline
: TextDecoration.none,
height: j == 0 ? 1 : 1.5,
decorationStyle:
TextDecorationStyle
.dotted,
decorationColor: Color(
0xFF676767,
),
fontFamily: "JakartaRegular",
fontSize: 14,
color:
j == 0
? AppColors.semi_black
: AppColors.grey_semi,
),
),
),
......@@ -233,7 +238,7 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
children: [
Expanded(
child: Text(
"${belowHeads[i]}",
belowHeads[i],
style: TextStyle(
color: AppColors.semi_black,
fontSize: 14,
......@@ -242,24 +247,39 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
),
Expanded(
child: InkResponse(
onTap:belowHeads[i]=="Mobile Number"?(){
onTap:
belowHeads[i] ==
"Mobile Number"
? () {
HapticFeedback.selectionClick();
launch(
'tel://${belowSubHeads[i]}',
);
}:null,
}
: null,
child: Padding(
padding: const EdgeInsets.all(4.0),
padding: const EdgeInsets.all(
4.0,
),
child: Text(
"${belowSubHeads[i]}",
belowSubHeads[i],
style: TextStyle(
decoration:belowHeads[i]=="Mobile Number"
? TextDecoration.underline:TextDecoration.none,
decoration:
belowHeads[i] ==
"Mobile Number"
? TextDecoration
.underline
: TextDecoration
.none,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.grey_semi,
decorationStyle:
TextDecorationStyle
.dotted,
decorationColor: Color(
0xFF676767,
),
color:
AppColors.grey_semi,
fontSize: 14,
),
),
......@@ -289,10 +309,13 @@ class _PendingtasksdetailsState extends State<Pendingtasksdetails> {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(builder: (context) => Followupupdatescreen(
MaterialPageRoute(
builder:
(context) => Followupupdatescreen(
leadID: task.leadid,
from:"Pending Tasks"
)),
from: "Pending Tasks",
),
),
);
},
child: Container(
......
......@@ -122,7 +122,7 @@ class _PendingTasksListState extends State<PendingTasksList> {
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
Container(
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
......@@ -149,7 +149,9 @@ class _PendingTasksListState extends State<PendingTasksList> {
(context) => Pendingtasksdetails(
detailIndex: index,
),
settings: RouteSettings(name: 'Pendingtasksdetails')
settings: RouteSettings(
name: 'Pendingtasksdetails',
),
),
);
},
......@@ -182,14 +184,23 @@ class _PendingTasksListState extends State<PendingTasksList> {
child: Text(
"${provider.pendingTasksLists[index].aname}",
maxLines: 1,
overflow: TextOverflow.visible,
overflow:
TextOverflow.visible,
style: TextStyle(
decoration: TextDecoration.underline,
decoration:
TextDecoration
.underline,
height: 1,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
decorationStyle:
TextDecorationStyle
.dotted,
decorationColor: Color(
0xFF676767,
),
color:
AppColors.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......@@ -200,23 +211,31 @@ class _PendingTasksListState extends State<PendingTasksList> {
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.grey_semi,
fontFamily: "JakartaRegular",
color:
AppColors.grey_semi,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
],
),
SizedBox(height: 10,),
SizedBox(height: 10),
Container(
padding: EdgeInsets.symmetric(vertical: 10,horizontal: 10),
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 10,
),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
gradient: LinearGradient(colors: [
borderRadius:
BorderRadius.circular(16),
gradient: LinearGradient(
colors: [
Color(0xFFFFFFFF),
Color(0xFFE8F7FF)
])
Color(0xFFE8F7FF),
],
),
),
child: Row(
crossAxisAlignment:
......@@ -226,10 +245,13 @@ class _PendingTasksListState extends State<PendingTasksList> {
child: Text(
"Remarks",
maxLines: 1,
overflow: TextOverflow.ellipsis,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.app_blue,
fontFamily: "JakartaRegular",
color:
AppColors.app_blue,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......@@ -237,12 +259,17 @@ class _PendingTasksListState extends State<PendingTasksList> {
Expanded(
child: Text(
"${provider.pendingTasksLists[index].anote}",
textAlign: TextAlign.right,
textAlign:
TextAlign.right,
maxLines: 2,
overflow: TextOverflow.ellipsis,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
color:
AppColors
.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
......
......@@ -2,7 +2,6 @@ import 'dart:io';
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:generp/Utils/commonServices.dart';
import 'package:generp/screens/crm/editProductsList.dart';
import 'package:provider/provider.dart';
......
......@@ -52,15 +52,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
child: Column(
children: [
Container(
// padding: const EdgeInsets.fromLTRB(5.0, 0.0, 10, 0),
// margin: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 10),
padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
10,
),
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 10),
height: 55,
decoration: BoxDecoration(
color: AppColors.white,
......@@ -79,8 +73,11 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
Navigator.pop(context, true);
},
child: Container(
child: SvgPicture.asset("assets/svg/appbar_back_button.svg", height: 25)),
child: SvgPicture.asset(
"assets/svg/appbar_back_button.svg",
height: 25,
),
),
),
),
Expanded(
......@@ -128,20 +125,26 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
suffixIcon: Container(
padding: EdgeInsets.only(right: 10),
child:provider.searchController.text.isNotEmpty?
InkResponse(
child:
provider
.searchController
.text
.isNotEmpty
? InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.searchController.clear();
provider.crmUniversalSearchFunction(
provider.searchController
.clear();
provider
.crmUniversalSearchFunction(
context,
);
},
child: SvgPicture.asset(
"assets/svg/crm/clear_search.svg",
),
):
SvgPicture.asset(
)
: SvgPicture.asset(
"assets/svg/search_ic.svg",
),
),
......@@ -186,7 +189,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
),
],
if (provider.accountsList.length > 0) ...[
if (provider.accountsList.isNotEmpty) ...[
Align(
alignment: Alignment.centerLeft,
child: Padding(
......@@ -209,11 +212,13 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
itemCount: provider.accountsList.length,
itemBuilder: (context, index) {
String accname = provider.accountsList[index].aname ?? "";
RegExp regex =
RegExp(provider.searchController.text, caseSensitive: false);
Iterable<Match> matches =
regex.allMatches(accname);
String accname =
provider.accountsList[index].aname ?? "";
RegExp regex = RegExp(
provider.searchController.text,
caseSensitive: false,
);
Iterable<Match> matches = regex.allMatches(accname);
List<TextSpan> textSpans = [];
int previousMatchEnd = 0;
......@@ -224,7 +229,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans.add(
TextSpan(
text: accname.substring(
previousMatchEnd, match.start),
previousMatchEnd,
match.start,
),
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12,
......@@ -237,8 +244,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans.add(
TextSpan(
text: accname.substring(
match.start, match.end),
text: accname.substring(match.start, match.end),
style: TextStyle(
color: AppColors.app_blue,
fontSize: 12, // Highlight color
......@@ -304,14 +310,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
leading: SvgPicture.asset(
"assets/svg/crm/crm_search_list_ic.svg",
),
title:RichText(text: TextSpan(
title: RichText(
text: TextSpan(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
......@@ -322,7 +330,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
],
if (provider.leadsList.length > 0) ...[
if (provider.leadsList.isNotEmpty) ...[
Align(
alignment: Alignment.centerLeft,
child: Padding(
......@@ -345,11 +353,13 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
itemCount: provider.leadsList.length,
itemBuilder: (context, index) {
String accname = provider.leadsList[index].aname ?? "";
RegExp regex =
RegExp(provider.searchController.text, caseSensitive: false);
Iterable<Match> matches =
regex.allMatches(accname);
String accname =
provider.leadsList[index].aname ?? "";
RegExp regex = RegExp(
provider.searchController.text,
caseSensitive: false,
);
Iterable<Match> matches = regex.allMatches(accname);
List<TextSpan> textSpans = [];
int previousMatchEnd = 0;
......@@ -360,7 +370,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans.add(
TextSpan(
text: accname.substring(
previousMatchEnd, match.start),
previousMatchEnd,
match.start,
),
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12,
......@@ -373,8 +385,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans.add(
TextSpan(
text: accname.substring(
match.start, match.end),
text: accname.substring(match.start, match.end),
style: TextStyle(
color: AppColors.app_blue,
fontSize: 12, // Highlight color
......@@ -439,14 +450,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
leading: SvgPicture.asset(
"assets/svg/crm/crm_search_list_ic.svg",
),
title: RichText(text: TextSpan(
title: RichText(
text: TextSpan(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
......@@ -456,7 +469,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
},
),
],
if (provider.enquiresList.length > 0) ...[
if (provider.enquiresList.isNotEmpty) ...[
Align(
alignment: Alignment.centerLeft,
child: Padding(
......@@ -480,17 +493,21 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
itemCount: provider.enquiresList.length,
itemBuilder: (context, index) {
String accname = "";
if(provider.enquiresList[index].companyName!.isEmpty){
if (provider
.enquiresList[index]
.companyName!
.isEmpty) {
accname = provider.enquiresList[index].name ?? "";
}else{
accname = provider.enquiresList[index].companyName ?? "";
} else {
accname =
provider.enquiresList[index].companyName ?? "";
}
RegExp regex =
RegExp(provider.searchController.text, caseSensitive: false);
Iterable<Match> matches =
regex.allMatches(accname);
RegExp regex = RegExp(
provider.searchController.text,
caseSensitive: false,
);
Iterable<Match> matches = regex.allMatches(accname);
List<TextSpan> textSpans = [];
int previousMatchEnd = 0;
......@@ -501,7 +518,9 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
textSpans.add(
TextSpan(
text: accname.substring(
previousMatchEnd, match.start),
previousMatchEnd,
match.start,
),
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12,
......@@ -514,8 +533,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// Add the matching text with highlighting
textSpans.add(
TextSpan(
text: accname.substring(
match.start, match.end),
text: accname.substring(match.start, match.end),
style: TextStyle(
color: AppColors.app_blue,
fontSize: 12, // Highlight color
......@@ -568,14 +586,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// fontSize: 14,
// ),
// ),
title:RichText(text: TextSpan(
title: RichText(
text: TextSpan(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
),
)),
),
),
// trailing: SvgPicture.asset(
// "assets/svg/arrow_right_new.svg",
// ),
......
......@@ -337,10 +337,13 @@ class _AllpaymentrequesitionlistsbymodesState
0xFFFFFFFF,
),
backgroundColor: AppColors.scaffold_bg_color,
body: provider.isLoading && requestLists.isEmpty
body:
provider.isLoading && requestLists.isEmpty
? Center(
child: CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(AppColors.app_blue),
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
),
),
)
: requestLists.isNotEmpty
......@@ -361,7 +364,8 @@ class _AllpaymentrequesitionlistsbymodesState
controller: _scrollController,
physics: const AlwaysScrollableScrollPhysics(),
itemCount:
requestLists.length + (provider.hasMoreData ? 1 : 0),
requestLists.length +
(provider.hasMoreData ? 1 : 0),
itemBuilder: (context, index) {
// loader row for pagination
if (index == requestLists.length) {
......@@ -639,14 +643,11 @@ class _AllpaymentrequesitionlistsbymodesState
),
)
: Emptywidget(context),
);
},
);
}
Future<void> _showLevelApprovalSheet(BuildContext context, paymentID) {
return showModalBottomSheet(
useSafeArea: true,
......@@ -791,8 +792,7 @@ class _AllpaymentrequesitionlistsbymodesState
provider.selectedID = value.id!;
provider.selectedValue = value.name!;
print(
"hfjkshfg" +
provider.selectedID.toString(),
"hfjkshfg${provider.selectedID}",
);
}
}
......@@ -1079,10 +1079,6 @@ class _AllpaymentrequesitionlistsbymodesState
child: Consumer<Requesitionlidtdetailsprovider>(
builder: (context, provider, child) {
// Fallback UI if provider data is not ready
if (provider.paymentsAccounts == null) {
return Center(child: CircularProgressIndicator());
}
return Container(
// Constrain the height to avoid overflow
constraints: BoxConstraints(
......@@ -1623,7 +1619,7 @@ class _AllpaymentrequesitionlistsbymodesState
Navigator.of(context).pop(false);
provider.imgFromGallery(context);
},
child: Container(
child: SizedBox(
height: 35,
child: Text("Select photo from gallery"),
),
......@@ -1635,7 +1631,7 @@ class _AllpaymentrequesitionlistsbymodesState
Navigator.of(context).pop(false);
provider.imgFromCamera(context);
},
child: Container(
child: SizedBox(
height: 35,
child: Text("Capture photo from camera"),
),
......
......@@ -79,7 +79,7 @@ class _FileviewerState extends State<Fileviewer> {
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: appbarNew(context, "File Viewer",0xFFFFFFFF),
appBar: appbarNew(context, "File Viewer", 0xFFFFFFFF),
body: SafeArea(child: Center(child: fileWidget(context))),
);
}
......@@ -172,7 +172,7 @@ class _FileviewerState extends State<Fileviewer> {
},
onConsoleMessage: (controller, consoleMessage) {
if (kDebugMode) {
debugPrint("consoleMessage${consoleMessage}");
debugPrint("consoleMessage$consoleMessage");
}
debugPrint("JavaScript console message: ${consoleMessage.message}");
},
......@@ -185,12 +185,10 @@ class _FileviewerState extends State<Fileviewer> {
Future<Uint8List?> _loadPdf(String url) async {
try {
final response = await http.get(Uri.parse(url));
if (response != null) {
if (response.statusCode == 200) {
print(response.bodyBytes);
return response.bodyBytes;
}
}
} catch (e) {
print('Error loading PDF: $e');
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment