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

17-09

parent 185e0896
......@@ -382,22 +382,21 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _buildScreen(context),
),
)
: _buildScreen(context)
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _buildScreen(context),
),
)
: _buildScreen(context)
: NoNetwork(context);
}
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: [
......@@ -456,19 +455,24 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
zoomControlsEnabled: true,
gestureRecognizers: {
Factory<OneSequenceGestureRecognizer>(
() => EagerGestureRecognizer(),
() => EagerGestureRecognizer(),
),
Factory<PanGestureRecognizer>(
() => PanGestureRecognizer(),
() => PanGestureRecognizer(),
),
Factory<ScaleGestureRecognizer>(
() => ScaleGestureRecognizer(),
() => ScaleGestureRecognizer(),
),
},
initialCameraPosition: CameraPosition(
target: widget.latitude != null && widget.longitude != null
? LatLng(widget.latitude!, widget.longitude!)
: provider.startLocation,
target:
widget.latitude != null &&
widget.longitude != null
? LatLng(
widget.latitude!,
widget.longitude!,
)
: provider.startLocation,
zoom: 14.0,
),
markers: provider.markers.toSet(),
......@@ -480,11 +484,12 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
provider.onCameraMove(context, position);
},
onTap: (position) {
provider.mapController?.hideMarkerInfoWindow(
provider.markers.isNotEmpty
? provider.markers.first.markerId
: MarkerId(''),
);
provider.mapController
?.hideMarkerInfoWindow(
provider.markers.isNotEmpty
? provider.markers.first.markerId
: MarkerId(''),
);
},
),
],
......@@ -495,11 +500,11 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
),
),
),
if (provider.isLoading || (provider.markers.isEmpty))...[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.white38,
if (provider.isLoading || (provider.markers.isEmpty)) ...[
Container(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
color: Colors.white38,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
......@@ -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(
......@@ -641,4 +652,4 @@ class _NearbyOpenLeadsState extends State<NearbyOpenLeads> {
},
);
}
}
\ No newline at end of file
}
......@@ -74,7 +74,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context,
widget.leadId,
);
provider.showMoreDetails = false;
provider.showMoreDetails = false;
provider.crmProspectDetailsAPIFunction(context, widget.leadId);
});
}
......@@ -122,17 +122,15 @@ 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;
editProvider.selectedStates = selectedState;
editProvider.selectedStateId = selectedState.id;
editProvider.selectedStateValue = selectedState.name;
await editProvider.crmLeadListDistrictsOnStateAPIFunction(
context,
widget.mode,
editProvider.selectedStateId,
);
}
await editProvider.crmLeadListDistrictsOnStateAPIFunction(
context,
widget.mode,
editProvider.selectedStateId,
);
}
// Prefill district
......@@ -142,17 +140,15 @@ 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;
editProvider.selectedDistricts = selectedDistrict;
editProvider.selectedDistrictId = selectedDistrict.id;
editProvider.selectedDistrictValue = selectedDistrict.district;
await editProvider.crmLeadListSubLocOnDistrictAPIFunction(
context,
widget.mode,
editProvider.selectedDistrictId,
);
}
await editProvider.crmLeadListSubLocOnDistrictAPIFunction(
context,
widget.mode,
editProvider.selectedDistrictId,
);
}
if (editProvider.subLocationsList.isNotEmpty &&
......@@ -160,11 +156,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
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;
}
editProvider.selectedSubLocations = selectedSubLocation;
editProvider.selectedSubLocationId = selectedSubLocation.id;
editProvider.selectedSubLocationValue = selectedSubLocation.subLocality;
}
print("Company Name: ${editProvider.editCompanyNameController.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;
......@@ -346,10 +340,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
elevation: 2,
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(
......@@ -396,7 +389,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
),
if (provider.showTransferAccount == "1") ...[
SizedBox(width: 5),
Expanded(
......@@ -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,43 +672,44 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded(
child: subHeadings4[j] == "Lead Age"
? Tooltip(
triggerMode:
TooltipTriggerMode
.tap,
message:
"${leadDetails.createdDatetime}",
child: Text(
subHeadings4[j] == ""
? "-"
: subHeadings4[j],
style: TextStyle(
fontSize: 14,
color: Color(
0xFF818181,
child:
subHeadings4[j] == "Lead Age"
? Tooltip(
triggerMode:
TooltipTriggerMode
.tap,
message:
"${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,
),
),
decorationColor:
AppColors
.grey_semi,
decoration:
TextDecoration
.underline,
),
),
)
: Text(
subHeadings4[j] == ""
? "-"
: subHeadings4[j],
style: TextStyle(
fontSize: 14,
color: Color(
0xFF818181,
),
),
),
),
],
),
......@@ -716,7 +718,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
),
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
......@@ -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(
mode: "",
pageTitleName:
"Lead Details",
leadId:
widget.leadId,
),
(context) => LeadDetailsByMode(
mode: "",
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 ?? "-",
];
......@@ -1067,19 +1064,18 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded(
child: Text(
textAlign: TextAlign.right,
textSubheads[j] == ""
? "-"
: textSubheads[j],
style: TextStyle(
fontSize: 14,
color: Color(0xFF818181),
),
Expanded(
child: Text(
textAlign: TextAlign.right,
textSubheads[j] == ""
? "-"
: textSubheads[j],
style: TextStyle(
fontSize: 14,
color: Color(0xFF818181),
),
),
),
],
),
);
......@@ -1126,7 +1122,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
],
///Contact Details
Container(
padding: EdgeInsets.only(left: 10, right: 10, top: 10),
......@@ -1146,14 +1142,17 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if (contactNotEmpty) ...[
Expanded(
child: InkResponse(
onTap:provider.addContactSelected?null: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
);
},
onTap:
provider.addContactSelected
? null
: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
);
},
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
......@@ -1183,27 +1182,35 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
itemCount: provider.contactList.length,
itemBuilder: (context, lp) {
return InkResponse(
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.editMobileNumberController.text =
provider.contactList[lp].mob1 ?? "";
provider.editAlternativeMobileController.text =
provider.contactList[lp].mob2 ?? "";
provider.editTelephoneController.text =
provider.contactList[lp].tel ?? "";
provider.editEmailController.text =
provider.contactList[lp].email ?? "";
_showEditContactSheet(
context,
lp,
provider.accountDetails.id!,
);
},
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.editMobileNumberController.text =
provider.contactList[lp].mob1 ?? "";
provider
.editAlternativeMobileController
.text =
provider.contactList[lp].mob2 ?? "";
provider.editTelephoneController.text =
provider.contactList[lp].tel ?? "";
provider.editEmailController.text =
provider.contactList[lp].email ?? "";
_showEditContactSheet(
context,
lp,
provider.accountDetails.id!,
);
},
child: Container(
decoration: BoxDecoration(
color: Colors.white,
......@@ -1214,7 +1221,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
vertical: 10,
),
margin: EdgeInsets.symmetric(vertical: 5),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
......@@ -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,14 +1319,17 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
] else ...[
InkResponse(
onTap:provider.addContactSelected?null: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
);
},
onTap:
provider.addContactSelected
? null
: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
);
},
child: Container(
height: 50,
margin: EdgeInsets.symmetric(
......@@ -1339,15 +1354,11 @@ 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(
......@@ -1380,7 +1391,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
return Container(
height: 250,
width: MediaQuery.of(context).size.width * 0.9,
margin: EdgeInsets.symmetric(vertical: 5),
padding: EdgeInsets.symmetric(
horizontal: 15,
......@@ -1394,8 +1405,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
......@@ -1424,7 +1434,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
color: AppColors.semi_black,
),
),
Text(
"${orderList[index].id}",
style: TextStyle(
......@@ -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(
......@@ -1518,7 +1527,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
),
Expanded(
child: Text(
textAlign: TextAlign.right,
......@@ -1535,11 +1544,9 @@ 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,
),
),
),
......@@ -1642,15 +1647,11 @@ 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(
......@@ -1667,7 +1668,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
],
),
),
SizedBox(
width: double.infinity,
height: 200,
......@@ -1687,21 +1688,15 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
context,
MaterialPageRoute(
builder:
(
context,
) => Paymentdetailsbymode(
mode: "",
pageTitleName:
"Payment Details",
paymentId:
paymentList[index]
.id,
),
(context) => Paymentdetailsbymode(
mode: "",
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,24 +3247,22 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
items:
addleadProvider.leadProductsList
.map(
(
ord,
) => DropdownMenuItem<Products>(
value: ord,
child: Text(
"${ord.name}",
style: const TextStyle(
fontSize: 14,
(ord) =>
DropdownMenuItem<Products>(
value: ord,
child: Text(
"${ord.name}",
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow.ellipsis,
),
),
overflow:
TextOverflow.ellipsis,
),
),
)
.toList(),
value:
addleadProvider.selectedProducts !=
null
addleadProvider.selectedProducts != null
? addleadProvider.leadProductsList
.firstWhere(
(ord) =>
......@@ -3296,12 +3291,11 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
value.id;
addleadProvider.selectedProductsID =
value.name;
addleadProvider
.crmSelectedProductDetailsApiFunction(
context,
value.id.toString(),
);
addleadProvider
.crmSelectedProductDetailsApiFunction(
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,44 +177,34 @@ 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:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Product...',
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
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(),
) ??
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
......@@ -292,24 +282,21 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
floatingActionButton: InkWell(
onTap: () {
HapticFeedback.selectionClick();
if (provider.selectedProducts != null) {
final productData = {
"product_id": provider.selectedProductsId!,
"price": provider.addProductPriceController.text,
"qty": provider.addQuantityController.text,
"net_price": provider.addTotalAmountController.text,
};
if (widget.editIndex != null) {
provider.updateProduct(widget.editIndex!, productData);
} else {
provider.addProduct(productData);
}
print(provider.getJsonEncodedProducts());
Navigator.pop(context, provider.getJsonEncodedProducts());
if (provider.selectedProducts != null) {
final productData = {
"product_id": provider.selectedProductsId!,
"price": provider.addProductPriceController.text,
"qty": provider.addQuantityController.text,
"net_price": provider.addTotalAmountController.text,
};
if (widget.editIndex != null) {
provider.updateProduct(widget.editIndex!, productData);
} else {
provider.addProduct(productData);
}
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();
......@@ -120,15 +122,15 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
......@@ -257,8 +259,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
TextOverflow.ellipsis,
),
),
)
......@@ -292,9 +293,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.name,
false,
null,
focusNodes[0],
focusNodes[1],
TextInputAction.next
focusNodes[0],
focusNodes[1],
TextInputAction.next,
),
errorWidget(context, provider.companynameError),
......@@ -307,9 +308,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.name,
false,
null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
focusNodes[1],
focusNodes[2],
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),
......@@ -406,7 +407,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[6],
null,
null,
TextInputAction.done,
),
errorWidget(context, provider.TelephoneError),
......@@ -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,44 +483,33 @@ 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:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Source...',
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
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(),
) ??
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
......@@ -539,24 +543,34 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider.referencesList
.map(
(slist) => DropdownMenuItem<
References
>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
(slist) =>
DropdownMenuItem<References>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
),
),
),
),
),
)
.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,50 +588,41 @@ 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
.referenceSearchController,
provider
.referenceSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Reference...',
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
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(),
) ??
?.toLowerCase()
.contains(
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,44 +705,33 @@ 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:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Team...',
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
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(),
) ??
?.toLowerCase()
.contains(
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,50 +808,40 @@ 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:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Segment...',
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
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(),
) ??
?.toLowerCase()
.contains(
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,17 +1148,16 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
items:
provider.statesList
.map(
(slist) => DropdownMenuItem<
States
>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
(slist) =>
DropdownMenuItem<States>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
),
),
),
),
),
)
.toList(),
......@@ -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!,
);
context,
"",
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,17 +1260,16 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.districtsList.isNotEmpty
? provider.selectedDistricts !=
null
? provider.districtsList!
.firstWhere(
(ord) =>
ord.id ==
? provider.districtsList.firstWhere(
(ord) =>
ord.id ==
provider
.selectedDistrictId,
orElse:
() =>
provider
.selectedDistrictId,
orElse:
() =>
provider
.districtsList![0]!,
)
.districtsList[0],
)
: null
: null,
onChanged: (Districts? value) {
......@@ -1280,15 +1280,15 @@ 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!,
);
context,
"",
value.id!,
);
if (provider
.subLocationsList
.isNotEmpty) {
......@@ -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,13 +114,14 @@ class _AddProspectLeadsState extends State<AddProspectLeads> {
items:
editProvider.employeeList
.map(
(slist) => DropdownMenuItem<LeadEmployees>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(fontSize: 14),
),
),
(slist) =>
DropdownMenuItem<LeadEmployees>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(fontSize: 14),
),
),
)
.toList(),
value:
......@@ -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,
......@@ -90,30 +97,31 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
style: TextStyle(fontSize: 14),
),
items:
provider.teamsList
.map(
(slist) =>
DropdownMenuItem<Teams>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
provider.teamsList
.map(
(slist) => DropdownMenuItem<Teams>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(fontSize: 14),
),
),
),
),
)
.toList(),
)
.toList(),
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,
......@@ -138,29 +146,26 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
style: TextStyle(fontSize: 14),
),
items:
provider.segmentsList
.map(
(slist) =>
DropdownMenuItem<Segments>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(
fontSize: 14,
provider.segmentsList
.map(
(slist) => DropdownMenuItem<Segments>(
value: slist,
child: Text(
slist.name!,
style: TextStyle(fontSize: 14),
),
),
),
),
)
.toList(),
)
.toList(),
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,12 +178,21 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
],
),
),
SizedBox(height: 25,),
SizedBox(height: 25),
InkWell(
onTap: provider.isLoading?null:(){
provider.isLoading = true;
provider.crmLeadDetailsEditAccountSubmitAPIFunction(context, widget.accountID, provider.selectedSegmentId, provider.selectedTeamId);
},
onTap:
provider.isLoading
? null
: () {
provider.isLoading = true;
provider
.crmLeadDetailsEditAccountSubmitAPIFunction(
context,
widget.accountID,
provider.selectedSegmentId,
provider.selectedTeamId,
);
},
child: Container(
alignment: Alignment.center,
height: 45,
......@@ -193,11 +207,18 @@ class _EditAccountDetailsState extends State<EditAccountDetails> {
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),
),
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();
......@@ -62,22 +62,22 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
Widget _scaffold(BuildContext context) {
return Consumer<Crmdashboardprovider>(
builder: (context, provider, child) {
var followUps = provider.dashboardFollowUps;
var followUps = provider.dashboardFollowUps;
return Scaffold(
resizeToAvoidBottomInset: true,
backgroundColor: AppColors.scaffold_bg_color,
......@@ -114,162 +114,186 @@ class _FollowuplistontypeState extends State<Followuplistontype> {
),
),
body:
(followUps.isNotEmpty)
? SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
Container(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.symmetric(
vertical: 5,
horizontal: 10,
),
itemCount: followUps.length,
itemBuilder: (context, index) {
final subHeadings = [
followUps[index].aname ?? "-",
followUps[index].appdate ??
"-",
followUps[index].anote ?? "-",
];
return InkResponse(
onTap: () async {
var res = await Navigator.push(
context,
MaterialPageRoute(
builder:
(context) =>
Followupupdatescreen(
leadID:
followUps[index]
.leadid,
mode: "",
),
settings: RouteSettings(
name: 'Followupupdatescreen',
),
(followUps.isNotEmpty)
? SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.symmetric(
vertical: 5,
horizontal: 10,
),
);
if(routeSettingName=="Followupupdatescreen"){
provider.crmDashboardFollowUpAPIFunction(context, widget.type);
}
},
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 3),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(
vertical: 3,
horizontal: 0,
),
child: Column(
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
"${followUps[index].aname}",
maxLines: 1,
overflow: TextOverflow.visible,
style: TextStyle(
decoration: TextDecoration.underline,
height: 1,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
fontSize: 14,
),
itemCount: followUps.length,
itemBuilder: (context, index) {
final subHeadings = [
followUps[index].aname ?? "-",
followUps[index].appdate ?? "-",
followUps[index].anote ?? "-",
];
return InkResponse(
onTap: () async {
var res = await Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Followupupdatescreen(
leadID: followUps[index].leadid,
mode: "",
),
settings: RouteSettings(
name: 'Followupupdatescreen',
),
),
);
if (routeSettingName ==
"Followupupdatescreen") {
provider.crmDashboardFollowUpAPIFunction(
context,
widget.type,
);
}
},
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 3),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Container(
padding: EdgeInsets.symmetric(
vertical: 3,
horizontal: 0,
),
Expanded(
child: Text(
"${followUps[index].appdate}",
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.grey_semi,
fontFamily: "JakartaRegular",
fontSize: 14,
child: Column(
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
"${followUps[index].aname}",
maxLines: 1,
overflow:
TextOverflow.visible,
style: TextStyle(
decoration:
TextDecoration
.underline,
height: 1,
decorationStyle:
TextDecorationStyle
.dotted,
decorationColor: Color(
0xFF676767,
),
color:
AppColors.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
Expanded(
child: Text(
"${followUps[index].appdate}",
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color:
AppColors.grey_semi,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
],
),
),
),
],
),
SizedBox(height: 10,),
Container(
padding: EdgeInsets.symmetric(vertical: 10,horizontal: 10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16),
gradient: LinearGradient(colors: [
Color(0xFFFFFFFF),
Color(0xFFE8F7FF)
])
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
"Remarks",
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.app_blue,
fontFamily: "JakartaRegular",
fontSize: 14,
SizedBox(height: 10),
Container(
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 10,
),
),
),
Expanded(
child: Text(
"${followUps[index].anote}",
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
fontSize: 14,
decoration: BoxDecoration(
borderRadius:
BorderRadius.circular(16),
gradient: LinearGradient(
colors: [
Color(0xFFFFFFFF),
Color(0xFFE8F7FF),
],
),
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
"Remarks",
maxLines: 1,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
color:
AppColors.app_blue,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
Expanded(
child: Text(
"${followUps[index].anote}",
textAlign:
TextAlign.right,
maxLines: 1,
style: TextStyle(
color:
AppColors
.semi_black,
fontFamily:
"JakartaRegular",
fontSize: 14,
),
),
),
],
),
),
),
],
],
),
),
),
],
],
),
),
),
],
);
},
),
),
);
},
),
),
SizedBox(height: 150),
],
),
)
: Emptywidget(context),
SizedBox(height: 150),
],
),
)
: Emptywidget(context),
);
},
);
......
......@@ -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);
});
}
......@@ -62,15 +69,15 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(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),
......@@ -186,21 +190,20 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<String>['Phone', 'Visit']
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
<String>['Phone', 'Visit']
.map(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
)
.toList(),
value: provider.selectedFollowupType,
onChanged: (String? newValue) {
setState(() {
......@@ -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,21 +254,20 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<String>['All','Cold', 'Hot', 'Warm']
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
<String>['All', 'Cold', 'Hot', 'Warm']
.map(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
)
.toList(),
value: provider.selectedLeadStatus,
onChanged: (String? newValue) {
setState(() {
......@@ -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,
......@@ -306,24 +308,23 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<String>[
'Next Appointment',
'Update Order Status',
]
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
<String>[
'Next Appointment',
'Update Order Status',
]
.map(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
)
.toList(),
value: provider.nextAppointmentStatus,
onChanged: (String? newValue) {
setState(() {
......@@ -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),
],
],
),
),
......@@ -389,25 +390,24 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
],
),
items:
<String>[
// 'Order Gain',
'Order Lost',
'No Requirement',
]
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
<String>[
// 'Order Gain',
'Order Lost',
'No Requirement',
]
.map(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
)
.toList(),
value: provider.selectOrderStatus,
onChanged: (String? newValue) {
setState(() {
......@@ -423,301 +423,296 @@ 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
...[
if (provider.selectOrderStatus == "Order Lost") ...[
TextWidget(context, "Select Competitor"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<String>(
isExpanded: true,
hint: const Row(
children: [
Expanded(
child: Text(
'Select Competitor',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
else ...[
if (provider.selectOrderStatus == "Order Lost") ...[
TextWidget(context, "Select Competitor"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<String>(
isExpanded: true,
hint: const Row(
children: [
Expanded(
child: Text(
'Select Competitor',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
],
),
items:
<String>[
"Mahindra",
"Kirloskar",
"Cummins",
"Ashok Leyland",
"Escorts",
"Eicher",
"Eicher Volovo",
"Ecogen",
"Crompton Greaves",
"Caterpillar",
]
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
),
),
)
.toList(),
value: provider.selectedCompetitor,
onChanged: (String? newValue) {
setState(() {
provider.selectedCompetitor =
newValue!;
});
},
buttonStyleData: ddtheme
.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
),
],
),
items:
<String>[
"Mahindra",
"Kirloskar",
"Cummins",
"Ashok Leyland",
"Escorts",
"Eicher",
"Eicher Volovo",
"Ecogen",
"Crompton Greaves",
"Caterpillar",
]
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
),
),
)
.toList(),
value: provider.selectedCompetitor,
onChanged: (String? newValue) {
setState(() {
provider.selectedCompetitor =
newValue!;
});
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
),
],
),
),
],
),
if(provider.competitorError!=null)...[
errorWidget(context, provider.competitorError)
]
] else
if (provider.selectOrderStatus ==
"No Requirement")
...[],
textControllerWidget(
context,
provider.reasonController,
"Reason",
"Reason (Description)",
provider.onReasonChanged,
TextInputType.text,
false,
null,
),
if(provider.reasonError!=null)...[
errorWidget(context, provider.reasonError)
]
if (provider.competitorError != null) ...[
errorWidget(context, provider.competitorError),
],
] else if (provider.selectOrderStatus ==
"No Requirement")
...[],
textControllerWidget(
context,
provider.reasonController,
"Reason",
"Reason (Description)",
provider.onReasonChanged,
TextInputType.text,
false,
null,
),
if (provider.reasonError != null) ...[
errorWidget(context, provider.reasonError),
],
],
],
),
),
SizedBox(height: 25),
] else if(provider.nextAppointmentStatus ==
"Next Appointment")
...[
Container(
padding: EdgeInsets.only(left: 10),
alignment: Alignment.topLeft,
child: Text(
"Next Appointment",
style: TextStyle(
color: AppColors.grey_thick,
fontSize: 16,
),
] else if (provider.nextAppointmentStatus ==
"Next Appointment") ...[
Container(
padding: EdgeInsets.only(left: 10),
alignment: Alignment.topLeft,
child: Text(
"Next Appointment",
style: TextStyle(
color: AppColors.grey_thick,
fontSize: 16,
),
),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
padding: EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
TextWidget(context, "Next Appointment Date"),
GestureDetector(
onTap: () {
provider.showDatePickerDialog(context);
},
child: Container(
height: 50,
alignment: Alignment.center,
decoration: BoxDecoration(
color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14),
),
Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 5, horizontal: 10),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
TextWidget(context, "Next Appointment Date"),
GestureDetector(
onTap: () {
provider.showDatePickerDialog(context);
},
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: Padding(
padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
0,
),
child: TextFormField(
controller:
provider.nextAppointmentDateController,
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,
child: TextFormField(
controller:
provider.nextAppointmentDateController,
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,
),
),
),
),
if(provider.nextAppDateError!=null)...[
errorWidget(context, provider.nextAppDateError)
],
TextWidget(context, "Appointment Type"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<String>(
isExpanded: true,
hint: const Row(
children: [
Expanded(
child: Text(
'Select Appointment Type',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
),
if (provider.nextAppDateError != null) ...[
errorWidget(context, provider.nextAppDateError),
],
TextWidget(context, "Appointment Type"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<String>(
isExpanded: true,
hint: const Row(
children: [
Expanded(
child: Text(
'Select Appointment Type',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
],
),
items:
<String>['Phone', 'Visit']
.map(
(value) =>
DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
],
),
items:
<String>['Phone', 'Visit']
.map(
(value) => DropdownMenuItem<String>(
value: value,
child: Text(
value ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
value: provider.selectNextAppointmentType,
onChanged: (String? newValue) {
setState(() {
provider.selectNextAppointmentType =
newValue!;
});
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme
.menuItemStyleData,
dropdownStyleData: ddtheme
.dropdownStyleData,
),
)
.toList(),
value: provider.selectNextAppointmentType,
onChanged: (String? newValue) {
setState(() {
provider.selectNextAppointmentType =
newValue!;
});
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
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") ...[
CheckboxListTile(
activeColor: AppColors.app_blue,
checkboxShape: CircleBorder(),
controlAffinity: ListTileControlAffinity.leading,
value: provider.checked,
contentPadding: EdgeInsets.symmetric(
horizontal: 0),
title: Text(
"Send SMS reminder to Customer",
style: TextStyle(
fontSize: 14,
fontFamily: "JakartaRegular",
),
if (provider.selectNextAppointmentType == "Visit") ...[
CheckboxListTile(
activeColor: AppColors.app_blue,
checkboxShape: CircleBorder(),
controlAffinity: ListTileControlAffinity.leading,
value: provider.checked,
contentPadding: EdgeInsets.symmetric(horizontal: 0),
title: Text(
"Send SMS reminder to Customer",
style: TextStyle(
fontSize: 14,
fontFamily: "JakartaRegular",
),
onChanged: (value) {
provider.checked = !provider.checked;
if (value == true) {
provider.smsSent = "1";
} else {
provider.smsSent = "0";
}
print(provider.smsSent +
provider.checked.toString());
},
),
],
textControllerWidget(
context,
provider.noteController,
"Note",
"Write Note",
provider.onNoteChanged,
TextInputType.text,
false,
null,
onChanged: (value) {
provider.checked = !provider.checked;
if (value == true) {
provider.smsSent = "1";
} else {
provider.smsSent = "0";
}
print(
provider.smsSent + provider.checked.toString(),
);
},
),
if(provider.noteError!=null)...[
errorWidget(context, provider.noteError)
],
],
),
textControllerWidget(
context,
provider.noteController,
"Note",
"Write Note",
provider.onNoteChanged,
TextInputType.text,
false,
null,
),
if (provider.noteError != null) ...[
errorWidget(context, provider.noteError),
],
],
),
SizedBox(height: 25),
],
),
SizedBox(height: 25),
],
SizedBox(height: 150),
],
),
),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
FloatingActionButtonLocation.centerFloat,
floatingActionButton: InkResponse(
onTap:provider.submitLoading?null: () {
provider.submitLoading = true;
provider.crmAddFollowUpAPIFunction(
context,
widget.from,
provider.nextAppointmentStatus,
provider.selectOrderStatus,
widget.leadID,
provider.selectedFollowupType,
provider.selectedCompetitor,
provider.selectedLeadStatus,
provider.selectNextAppointmentType,
provider.smsSent,
widget.mode);
},
onTap:
provider.submitLoading
? null
: () {
provider.submitLoading = true;
provider.crmAddFollowUpAPIFunction(
context,
widget.from,
provider.nextAppointmentStatus,
provider.selectOrderStatus,
widget.leadID,
provider.selectedFollowupType,
provider.selectedCompetitor,
provider.selectedLeadStatus,
provider.selectNextAppointmentType,
provider.smsSent,
widget.mode,
);
},
child: Container(
height: 45,
alignment: Alignment.center,
......@@ -727,16 +722,19 @@ class _FollowupupdatescreenState extends State<Followupupdatescreen> {
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15),
),
child:provider.submitLoading?CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.white),
): Text(
"Submit",
style: TextStyle(
fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
child:
provider.submitLoading
? CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation(AppColors.white),
)
: Text(
"Submit",
style: TextStyle(
fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
),
),
);
......
......@@ -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]) {
......@@ -89,15 +86,15 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
}
return (connection == "Online")
? Platform.isAndroid
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
? WillPopScope(
onWillPop: () => onBackPressed(context),
child: SafeArea(
top: false,
bottom: true,
child: _scaffold(context),
),
)
: _scaffold(context)
: NoNetwork(context);
}
......@@ -141,103 +138,113 @@ class _GeneratedquoteslistState extends State<Generatedquoteslist> {
),
),
body:
(quotess.isNotEmpty)
? SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
Container(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.symmetric(
vertical: 5,
horizontal: 10,
),
itemCount: quotess.length,
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => LeadDetailsByMode(
pageTitleName: "Lead Details",
mode: "",
leadId: quotess[index].leadid,
),
(quotess.isNotEmpty)
? SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Column(
children: [
SizedBox(
width: double.infinity,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: EdgeInsets.symmetric(
vertical: 5,
horizontal: 10,
),
);
},
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
margin: EdgeInsets.symmetric(vertical: 3),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
child: Row(
children: [
SvgPicture.asset("assets/svg/finance/fin_payments_ic.svg",),
SizedBox(width: 10,),
Expanded(
flex: 4,
child: Text(
"${quotess[index].aname}",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration: TextDecoration.underline,
height: 1.5,
decorationStyle: TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
fontSize: 14,
),
),
),
SizedBox(width: 10,),
Expanded(
flex: 2,
itemCount: quotess.length,
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => LeadDetailsByMode(
pageTitleName: "Lead Details",
mode: "",
leadId: quotess[index].leadid,
),
),
);
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8),
color: getDecorationColor(quotess[index].lstatus)
color: Colors.white,
borderRadius: BorderRadius.circular(15),
),
child: Text(
"${quotess[index].lstatus}",
textAlign: TextAlign.center,
maxLines: 1,
style: TextStyle(
color: getTextColor(quotess[index].lstatus),
fontFamily: "JakartaRegular",
fontSize: 14,
),
margin: EdgeInsets.symmetric(vertical: 3),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
child: Row(
children: [
SvgPicture.asset(
"assets/svg/finance/fin_payments_ic.svg",
),
SizedBox(width: 10),
Expanded(
flex: 4,
child: Text(
"${quotess[index].aname}",
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
decoration:
TextDecoration.underline,
height: 1.5,
decorationStyle:
TextDecorationStyle.dotted,
decorationColor: Color(0xFF676767),
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
fontSize: 14,
),
),
),
SizedBox(width: 10),
Expanded(
flex: 2,
child: Container(
padding: EdgeInsets.symmetric(
vertical: 5,
),
decoration: BoxDecoration(
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,
),
fontFamily: "JakartaRegular",
fontSize: 14,
),
),
),
),
],
),
),
),
],
);
},
),
),
);
},
),
),
SizedBox(height: 150),
],
),
)
: Emptywidget(context),
SizedBox(height: 150),
],
),
)
: Emptywidget(context),
);
},
);
......
......@@ -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"?(){
HapticFeedback.selectionClick();
launch(
'tel://${belowSubHeads[i]}',
);
}:null,
onTap:
belowHeads[i] ==
"Mobile Number"
? () {
HapticFeedback.selectionClick();
launch(
'tel://${belowSubHeads[i]}',
);
}
: 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(
leadID: task.leadid,
from:"Pending Tasks"
)),
MaterialPageRoute(
builder:
(context) => Followupupdatescreen(
leadID: task.leadid,
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',
),
),
);
},
......@@ -176,20 +178,29 @@ class _PendingTasksListState extends State<PendingTasksList> {
children: [
Row(
crossAxisAlignment:
CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [
Expanded(
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,36 +211,47 @@ 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:
CrossAxisAlignment.start,
CrossAxisAlignment.start,
children: [
Expanded(
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,22 +125,28 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
suffixIcon: Container(
padding: EdgeInsets.only(right: 10),
child:provider.searchController.text.isNotEmpty?
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.searchController.clear();
provider.crmUniversalSearchFunction(
context,
);
},
child: SvgPicture.asset(
"assets/svg/crm/clear_search.svg",
),
):
SvgPicture.asset(
"assets/svg/search_ic.svg",
),
child:
provider
.searchController
.text
.isNotEmpty
? InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.searchController
.clear();
provider
.crmUniversalSearchFunction(
context,
);
},
child: SvgPicture.asset(
"assets/svg/crm/clear_search.svg",
),
)
: SvgPicture.asset(
"assets/svg/search_ic.svg",
),
),
counterText: "",
hintText: "Search By Name/Mobile",
......@@ -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(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
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(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
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
......@@ -557,7 +575,7 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
),
child: ListTile(
leading: SvgPicture.asset(
"assets/svg/crm/crm_search_list_ic.svg",
"assets/svg/crm/crm_search_list_ic.svg",
),
// title: Text(
// provider.enquiresList[index].companyName == ""
......@@ -568,14 +586,16 @@ class _UniversalsearchscreenState extends State<Universalsearchscreen> {
// fontSize: 14,
// ),
// ),
title:RichText(text: TextSpan(
children: textSpans,
style: TextStyle(
color: AppColors.semi_black,
fontSize: 12, // Highlight color
fontFamily: "JakartaMedium",
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",
// ),
......
......@@ -77,7 +77,7 @@ class _AllpaymentrequesitionlistsbymodesState
_scrollController.addListener(() {
if (_scrollController.position.pixels >=
_scrollController.position.maxScrollExtent - 200 &&
_scrollController.position.maxScrollExtent - 200 &&
!provider.isLoadingMore &&
provider.hasMoreData) {
provider.paymentRequestionListsAPIFunction(
......@@ -337,316 +337,317 @@ class _AllpaymentrequesitionlistsbymodesState
0xFFFFFFFF,
),
backgroundColor: AppColors.scaffold_bg_color,
body: provider.isLoading && requestLists.isEmpty
? Center(
child: CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(AppColors.app_blue),
),
)
: requestLists.isNotEmpty
? RefreshIndicator(
onRefresh: () async {
provider.resetPagination();
await provider.paymentRequestionListsAPIFunction(
context,
widget.mode,
"",
"",
);
},
child: Scrollbar(
controller: _scrollController, // attach here
thumbVisibility: false,
child: ListView.builder(
controller: _scrollController,
physics: const AlwaysScrollableScrollPhysics(),
itemCount:
requestLists.length + (provider.hasMoreData ? 1 : 0),
itemBuilder: (context, index) {
// loader row for pagination
if (index == requestLists.length) {
return provider.isLoadingMore
? const Padding(
padding: EdgeInsets.all(16),
child: Center(
child: CircularProgressIndicator(),
body:
provider.isLoading && requestLists.isEmpty
? Center(
child: CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
),
)
: const SizedBox.shrink();
}
// Your swipe logic untouched
final request = requestLists[index];
shouldShowSwipeButtons(request.status);
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res = await Navigator.push(
),
)
: requestLists.isNotEmpty
? RefreshIndicator(
onRefresh: () async {
provider.resetPagination();
await provider.paymentRequestionListsAPIFunction(
context,
MaterialPageRoute(
builder:
(context) => Paymentrequestionlistdetails(
pageName: widget.pageTitleName,
mode: widget.mode,
paymentRequestId:
requestLists[index].id,
),
settings: RouteSettings(
name: "Paymentrequestionlistdetails",
),
),
widget.mode,
"",
"",
);
if (routeSettingName ==
"Paymentrequestionlistdetails") {
print("croos refresh");
provider.paymentRequestionListsAPIFunction(
context,
widget.mode,
"",
"",
);
}
},
child: Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Slidable(
startActionPane:
shouldShowButtons
? ActionPane(
motion: const ScrollMotion(),
dragDismissible: false,
// dismissible: DismissiblePane(onDismissed: () {}),
children: [
if (shouldShowButtons &&
![
"admin",
"self",
].contains(widget.mode)) ...[
SlidableAction(
onPressed: (context) {
_showLevelRejectionSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFFFE5E5,
),
foregroundColor: Color(
0xFFEF3739,
child: Scrollbar(
controller: _scrollController, // attach here
thumbVisibility: false,
child: ListView.builder(
controller: _scrollController,
physics: const AlwaysScrollableScrollPhysics(),
itemCount:
requestLists.length +
(provider.hasMoreData ? 1 : 0),
itemBuilder: (context, index) {
// loader row for pagination
if (index == requestLists.length) {
return provider.isLoadingMore
? const Padding(
padding: EdgeInsets.all(16),
child: Center(
child: CircularProgressIndicator(),
),
icon: Icons.clear,
label: 'Reject',
),
],
)
: const SizedBox.shrink();
}
if (widget.mode == "process") ...[
SlidableAction(
onPressed: (context) {
detailsProvider
.approveRejectPaymentRequestAPIFunction(
context,
requestLists[index]
.id,
);
detailsProvider.preValues();
_showAddPaymentSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFFFF8E5,
),
foregroundColor: Color(
0xFFFFB600,
),
icon: Icons.add,
label: 'Add Payment',
),
],
],
)
: null,
endActionPane:
shouldShowButtons
? ActionPane(
motion: const ScrollMotion(),
key: ValueKey(
requestLists[index].id,
),
dragDismissible: false,
// Your swipe logic untouched
final request = requestLists[index];
shouldShowSwipeButtons(request.status);
// dismissible: DismissiblePane(
//
// onDismissed: () {},
// closeOnCancel: true,
// resizeDuration: Duration(milliseconds: 300),),
children: [
if ([
"apr_lvl1",
"apr_lvl2",
"self_apr_lvl2",
].contains(widget.mode)) ...[
SlidableAction(
onPressed: (context) {
detailsProvider
.paymentRequesitionDetails(
context,
requestLists[index]
.id,
);
detailsProvider.preValues();
detailsProvider
.approveRejectPaymentRequestAPIFunction(
context,
requestLists[index]
.id,
);
_showLevelApprovalSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFE9FFE8,
),
foregroundColor: Color(
0xFF4CB443,
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Paymentrequestionlistdetails(
pageName: widget.pageTitleName,
mode: widget.mode,
paymentRequestId:
requestLists[index].id,
),
settings: RouteSettings(
name: "Paymentrequestionlistdetails",
),
icon: Icons.check,
label: 'Approve',
),
],
],
)
: null,
);
if (routeSettingName ==
"Paymentrequestionlistdetails") {
print("croos refresh");
provider.paymentRequestionListsAPIFunction(
context,
widget.mode,
"",
"",
);
}
},
child: Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Slidable(
startActionPane:
shouldShowButtons
? ActionPane(
motion: const ScrollMotion(),
dragDismissible: false,
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
child: Column(
children: [
Row(
children: [
Expanded(
flex: 1,
child: Container(
height: 50,
width: 50,
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: getDecorationColor(
requestLists[index].status,
),
shape: BoxShape.circle,
),
child: Center(
child: Text(
getText(
requestLists[index]
.status,
),
style: TextStyle(
color: getTextColor(
requestLists[index]
.status,
),
fontSize: getSize(
requestLists[index]
.status,
),
fontFamily: "JakartaBold",
// dismissible: DismissiblePane(onDismissed: () {}),
children: [
if (shouldShowButtons &&
![
"admin",
"self",
].contains(widget.mode)) ...[
SlidableAction(
onPressed: (context) {
_showLevelRejectionSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFFFE5E5,
),
foregroundColor: Color(
0xFFEF3739,
),
icon: Icons.clear,
label: 'Reject',
),
],
if (widget.mode == "process") ...[
SlidableAction(
onPressed: (context) {
detailsProvider
.approveRejectPaymentRequestAPIFunction(
context,
requestLists[index]
.id,
);
detailsProvider.preValues();
_showAddPaymentSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFFFF8E5,
),
foregroundColor: Color(
0xFFFFB600,
),
icon: Icons.add,
label: 'Add Payment',
),
],
],
)
: null,
endActionPane:
shouldShowButtons
? ActionPane(
motion: const ScrollMotion(),
key: ValueKey(
requestLists[index].id,
),
),
),
),
dragDismissible: false,
// dismissible: DismissiblePane(
//
// onDismissed: () {},
// closeOnCancel: true,
// resizeDuration: Duration(milliseconds: 300),),
children: [
if ([
"apr_lvl1",
"apr_lvl2",
"self_apr_lvl2",
].contains(widget.mode)) ...[
SlidableAction(
onPressed: (context) {
detailsProvider
.paymentRequesitionDetails(
context,
requestLists[index]
.id,
);
detailsProvider.preValues();
detailsProvider
.approveRejectPaymentRequestAPIFunction(
context,
requestLists[index]
.id,
);
_showLevelApprovalSheet(
context,
requestLists[index].id,
);
},
backgroundColor: Color(
0xFFE9FFE8,
),
foregroundColor: Color(
0xFF4CB443,
),
icon: Icons.check,
label: 'Approve',
),
],
],
)
: null,
child: Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
SizedBox(width: 10),
Expanded(
flex: 4,
child: SizedBox(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
child: Column(
children: [
Row(
children: [
Text(
requestLists[index]
.accountName!,
maxLines: 1,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
fontFamily:
"JakartaRegular",
fontSize: 14,
color:
AppColors
.semi_black,
Expanded(
flex: 1,
child: Container(
height: 50,
width: 50,
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: getDecorationColor(
requestLists[index].status,
),
shape: BoxShape.circle,
),
child: Center(
child: Text(
getText(
requestLists[index]
.status,
),
style: TextStyle(
color: getTextColor(
requestLists[index]
.status,
),
fontSize: getSize(
requestLists[index]
.status,
),
fontFamily: "JakartaBold",
),
),
),
),
),
SizedBox(width: 10),
Expanded(
flex: 4,
child: SizedBox(
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
requestLists[index]
.accountName!,
maxLines: 1,
overflow:
TextOverflow.ellipsis,
style: TextStyle(
fontFamily:
"JakartaRegular",
fontSize: 14,
color:
AppColors
.semi_black,
),
),
Text(
"${requestLists[index].date}",
style: TextStyle(
fontFamily:
"JakartaRegular",
fontSize: 14,
color:
AppColors.app_blue,
),
),
],
),
),
),
Text(
"${requestLists[index].date}",
style: TextStyle(
fontFamily:
"JakartaRegular",
fontSize: 14,
color:
AppColors.app_blue,
Expanded(
flex: 3,
child: Text(
maxLines: 1,
"₹ ${requestLists[index].amount!}",
textAlign: TextAlign.right,
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
),
),
),
],
),
),
),
Expanded(
flex: 3,
child: Text(
maxLines: 1,
"₹ ${requestLists[index].amount!}",
textAlign: TextAlign.right,
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
),
),
],
),
],
),
),
],
),
),
),
),
);
},
),
),
);
},
),
),
)
: Emptywidget(context),
)
: 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,11 +185,9 @@ 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;
}
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