Commit 55280429 authored by Sai Srinivas's avatar Sai Srinivas
Browse files

20-08-2025 By Sai Srinivas

Test Cases CRM
parent 6ace5c45
......@@ -9,10 +9,17 @@ import '../Utils/BackgroundLocationService.dart';
class LogoutNotifier extends ChangeNotifier{
bool _logoutButtonClicked = true;
bool _isLoading = false;
bool get isLoading => _isLoading;
bool get logoutButtonClicked => _logoutButtonClicked;
set logoutButtonClicked(bool val){
_logoutButtonClicked = val;
notifyListeners();
}
Future<void> LogoutApiFunction(HomescreenNotifier prov,BuildContext context) async {
// print("lohi");
try {
......@@ -22,6 +29,7 @@ class LogoutNotifier extends ChangeNotifier{
if (data.error == 0) {
_isLoading = false;
_logoutButtonClicked = false;
await BackgroundLocationService.stopLocationService();
SharedpreferencesService().clearPreferences();
Navigator.push(context,
......
......@@ -32,6 +32,12 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
final GlobalKey webViewKey = GlobalKey();
var dl = DownloadManager();
TextEditingController sourceSearchController = TextEditingController();
TextEditingController referenceSearchController = TextEditingController();
TextEditingController teamSearchController = TextEditingController();
TextEditingController segmentSearchController = TextEditingController();
TextEditingController productSearchController = TextEditingController();
TextEditingController addProductPriceController = TextEditingController();
TextEditingController addQuantityController = TextEditingController();
TextEditingController addTotalAmountController = TextEditingController();
......@@ -708,6 +714,10 @@ class Addnewleadsandprospectsprovider extends ChangeNotifier {
void resetForm() {
checkDropdownReset();
_productRows.clear();
sourceSearchController.clear();
referenceSearchController.clear();
teamSearchController.clear();
segmentSearchController.clear();
addProductPriceController.clear();
addQuantityController.clear();
addTotalAmountController.clear();
......
......@@ -524,7 +524,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......@@ -635,7 +635,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
// }
String raw = data.map((row) => row.join('\t')).join('\n');
print('Clipboard data: $raw');
await Clipboard.setData(ClipboardData(text: raw));
await Clipboard.setData(ClipboardData(text: leadDetails.copyMessage!));
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text("Copied to Clipboard")));
......
......@@ -9,6 +9,7 @@ import '../../services/api_calling.dart';
import '../HomeScreenNotifier.dart';
class crmProspectDetailsProvider extends ChangeNotifier {
bool _addContactSelected = false;
List<Leads> _leadsList = [];
List<Contacts> _contactsList = [];
List<Orders> _ordersList = [];
......@@ -21,6 +22,13 @@ class crmProspectDetailsProvider extends ChangeNotifier {
bool _showMoreDetails = false;
bool get addContactSelected => _addContactSelected;
set addContactSelected(bool value){
_addContactSelected = value;
notifyListeners();
}
TextEditingController nameController = TextEditingController();
TextEditingController designationController = TextEditingController();
TextEditingController mobileNumberController = TextEditingController();
......@@ -336,6 +344,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
if (data != null) {
if (data.error == "0") {
Navigator.pop(context, true);
_addContactSelected = false;
resetAll();
_isLoading = false;
notifyListeners();
......@@ -381,6 +390,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
if (data != null) {
if (data.error == "0") {
_isLoading = false;
_addContactSelected = false;
Navigator.pop(context, true);
resetAll();
_isLoading = false;
......@@ -404,7 +414,7 @@ class crmProspectDetailsProvider extends ChangeNotifier {
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -133,6 +133,11 @@ import '../../screens/LoginScreen.dart';
import 'crmLeadDetailsProvider.dart';
class Editproductlistprovider extends ChangeNotifier {
bool _editProductDetailsClicked = false;
bool _editContactDetailsClicked = false;
bool _followupDetailsClicked = false;
bool _appointmentDetailsClicked = false;
bool _quotationDetailsClicked = false;
TextEditingController addEditProductPriceController = TextEditingController();
TextEditingController addEditQuantityController = TextEditingController();
TextEditingController addEditTotalAmountController = TextEditingController();
......@@ -151,6 +156,15 @@ class Editproductlistprovider extends ChangeNotifier {
String? qtyError;
String? priceError;
String? productError;
bool get editProductDetailsClicked => _editProductDetailsClicked;
bool get editContactDetailsClicked => _editContactDetailsClicked;
bool get followupDetailsClicked => _followupDetailsClicked;
bool get appointmentDetailsClicked => _appointmentDetailsClicked;
bool get quotationDetailsClicked => _quotationDetailsClicked;
List<Products> get productsList => _productsList;
List<LeadProducts> get leadProductsList => _leadProductsList;
......@@ -169,6 +183,30 @@ class Editproductlistprovider extends ChangeNotifier {
bool get submitLoading => _submitLoading;
set editProductDetailsClicked(bool value){
_editProductDetailsClicked = value;
notifyListeners();
}
set editContactDetailsClicked(bool value){
_editContactDetailsClicked = value;
notifyListeners();
}
set followupDetailsClicked(bool value){
_followupDetailsClicked = value;
notifyListeners();
}
set appointmentDetailsClicked(bool value){
_appointmentDetailsClicked = value;
notifyListeners();
}
set quotationDetailsClicked(bool value){
_quotationDetailsClicked = value;
notifyListeners();
}
set selectedProducts(Products? value) {
_selectedProducts = value;
_selectedAddEditProductId = value!.id!;
......@@ -438,6 +476,11 @@ class Editproductlistprovider extends ChangeNotifier {
void resetForm() {
checkDropdownReset();
_editProductDetailsClicked = false;
_editContactDetailsClicked = false;
_followupDetailsClicked = false;
_appointmentDetailsClicked = false;
_quotationDetailsClicked = false;
addEditProductPriceController.clear();
addEditQuantityController.clear();
addEditTotalAmountController.clear();
......
......@@ -339,7 +339,7 @@ class followUpUpdateProvider extends ChangeNotifier {
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -665,7 +665,7 @@ class Requestionlistprovider extends ChangeNotifier {
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -947,7 +947,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -1874,7 +1874,7 @@ String? productsEmptyError ;
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -596,7 +596,7 @@ class Addpaymentprovider extends ChangeNotifier{
context: context,
builder:
(BuildContext context) => Container(
height: 216,
height: 250,
padding: const EdgeInsets.only(top: 6.0),
margin: EdgeInsets.only(
bottom: MediaQuery.of(context).viewInsets.bottom,
......
......@@ -140,6 +140,7 @@ PreferredSizeWidget appbar2New(BuildContext context, title, reset, widget,int co
children: [
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
reset();
Navigator.pop(context, true);
},
......@@ -150,6 +151,7 @@ PreferredSizeWidget appbar2New(BuildContext context, title, reset, widget,int co
flex: 4,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
reset();
Navigator.pop(context, true);
},
......
......@@ -229,6 +229,7 @@ class _MyHomePageState extends State<MyHomePage> {
flex: 4,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
_showProfileBottomSheet(
context,
);
......@@ -585,6 +586,7 @@ class _MyHomePageState extends State<MyHomePage> {
return Expanded(
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res;
switch (filteredItems[ic]['name']) {
case "Attendance":
......@@ -738,6 +740,7 @@ class _MyHomePageState extends State<MyHomePage> {
),
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -848,6 +851,7 @@ class _MyHomePageState extends State<MyHomePage> {
itemBuilder: (context, ci) {
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res;
switch (filteredItems[ci]['name']) {
case "Attendance":
......@@ -1267,6 +1271,7 @@ class _MyHomePageState extends State<MyHomePage> {
itemBuilder: (context, ci) {
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res;
switch (coreFilteredItems[ci]['name']) {
case "Gen Tracker":
......@@ -1709,6 +1714,7 @@ class _MyHomePageState extends State<MyHomePage> {
Spacer(),
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -1867,6 +1873,7 @@ class _MyHomePageState extends State<MyHomePage> {
SizedBox(height: 10),
InkWell(
onTap: () {
HapticFeedback.selectionClick();
// LoginApiFunction();
var f = FocusScope.of(context);
......@@ -1969,9 +1976,10 @@ class _MyHomePageState extends State<MyHomePage> {
),
SizedBox(height: 20),
InkWell(
onTap: () {
onTap:logout.logoutButtonClicked?null: () {
HapticFeedback.selectionClick();
// LoginApiFunction();
logout.logoutButtonClicked = true;
var f = FocusScope.of(context);
if (!f.hasPrimaryFocus) {
......@@ -2008,6 +2016,7 @@ class _MyHomePageState extends State<MyHomePage> {
InkWell(
onTap: () {
HapticFeedback.selectionClick();
// LoginApiFunction();
var f = FocusScope.of(context);
......
......@@ -174,6 +174,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
children: [
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.resetAll();
editProvider.resetForm();
Navigator.pop(context, true);
......@@ -188,6 +189,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
flex: 4,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.resetAll();
editProvider.resetForm();
Navigator.pop(context, true);
......@@ -285,6 +287,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
flex: 1,
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -326,6 +329,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
flex: 1,
child: InkResponse(
onTap: () async {
HapticFeedback.mediumImpact();
provider.copyToClipboard(context);
},
child: Container(
......@@ -677,6 +681,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
provider.showMoreDetails =
!provider.showMoreDetails;
},
......@@ -747,7 +752,9 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
if (productsNotEmpty) ...[
Expanded(
child: InkResponse(
onTap: () async {
onTap:editProvider.editProductDetailsClicked?null: () async {
HapticFeedback.selectionClick();
editProvider.editProductDetailsClicked = true;
editProvider.resetForm();
await editProvider
.crmLeadDetailsEditProductsViewAPIFunction(
......@@ -794,7 +801,12 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
itemCount: provider.leadProducts.length,
itemBuilder: (context, lp) {
return InkResponse(
onTap: () async {
onTap:
editProvider.editProductDetailsClicked
? null : () async {
// var res = await Navigator.push(
// context,
// MaterialPageRoute(
......@@ -804,6 +816,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
// ),
// ),
// );
editProvider.editProductDetailsClicked = true;
await editProvider
.crmLeadDetailsEditProductsViewAPIFunction(
context,
......@@ -978,7 +991,9 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () async {
onTap:editProvider.editProductDetailsClicked?null: () async {
HapticFeedback.selectionClick();
editProvider.editProductDetailsClicked = true;
editProvider.resetForm();
await editProvider
.crmLeadDetailsEditProductsViewAPIFunction(
......@@ -1040,7 +1055,8 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
if (contactsNotEmpty) ...[
Expanded(
child: InkResponse(
onTap: () {
onTap: editProvider.editContactDetailsClicked?null: () {HapticFeedback.selectionClick();
editProvider.editContactDetailsClicked = true;
_showAddContactSheet(context);
},
child: Padding(
......@@ -1072,7 +1088,8 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
itemCount: provider.contactDetails.length,
itemBuilder: (context, lp) {
return InkResponse(
onTap: () async {
onTap:editProvider.editContactDetailsClicked?null: () async {HapticFeedback.selectionClick();
editProvider.editContactDetailsClicked = true;
provider.editNameController.text =
provider.contactDetails[lp].name ??
"";
......@@ -1152,7 +1169,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
Expanded(
flex: 2,
child: InkResponse(
onTap: () {
onTap: () {HapticFeedback.selectionClick();
launch(
'tel://${provider.contactDetails[lp].mob1}',
);
......@@ -1206,7 +1223,8 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () async {
onTap:editProvider.editContactDetailsClicked?null: () async {HapticFeedback.selectionClick();
editProvider.editContactDetailsClicked = true;
_showAddContactSheet(context);
},
child: Container(
......@@ -1257,7 +1275,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
if (followupNotEmpty) ...[
Expanded(
child: InkResponse(
onTap: () async {
onTap: () async {HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -1611,7 +1629,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () async {
onTap: () async {HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -1674,7 +1692,8 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
if (appointmentNotEmpty) ...[
Expanded(
child: InkResponse(
onTap: () {
onTap:editProvider.appointmentDetailsClicked?null: () {HapticFeedback.selectionClick();
editProvider.appointmentDetailsClicked = true;
_showAddAppointmentSheet(context);
},
child: Padding(
......@@ -2006,7 +2025,8 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () {
onTap: editProvider.appointmentDetailsClicked?null:() {HapticFeedback.selectionClick();
editProvider.appointmentDetailsClicked = true;
_showAddAppointmentSheet(context);
},
child: Container(
......@@ -2335,7 +2355,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () async {
onTap: () async {HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -2401,8 +2421,9 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
child: Consumer2<crmLeadDetailsProvider,Editproductlistprovider>(
builder: (context, provider,editProvider, child) {
editProvider.appointmentDetailsClicked = false;
return Container(
margin: EdgeInsets.only(
bottom: 15,
......@@ -2431,7 +2452,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
),
TextWidget(context, "Appointment Date"),
GestureDetector(
onTap: () {
onTap: () {HapticFeedback.selectionClick();
provider.showDatePickerDialog(context);
},
child: Row(
......@@ -2551,7 +2572,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
onTap:
provider.isLoading
? null
: () {
: () {HapticFeedback.selectionClick();
provider.isLoading = true;
provider
.crmLeadDetailsAddAppointmentAPIFunction(
......@@ -2601,7 +2622,11 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
context,
listen: false,
);
final editProvider = Provider.of<Editproductlistprovider>(
context,
listen: false,
);
editProvider.appointmentDetailsClicked = false;
provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode);
});
});
......@@ -2620,8 +2645,9 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
child: Consumer2<crmLeadDetailsProvider,Editproductlistprovider>(
builder: (context, provider,editProvider, child) {
editProvider.editContactDetailsClicked = false;
return Container(
margin: EdgeInsets.only(
bottom: 15,
......@@ -2749,7 +2775,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
onTap:
provider.isLoading
? null
: () {
: () {HapticFeedback.selectionClick();
provider.isLoading = true;
provider
.crmLeadDetailsAddContactAPIFunction(
......@@ -2802,7 +2828,11 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
context,
listen: false,
);
final editProvider = Provider.of<Editproductlistprovider>(
context,
listen: false,
);
editProvider.editContactDetailsClicked = false;
provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode);
});
});
......@@ -2820,9 +2850,11 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
builder: (context) {
return StatefulBuilder(
builder: (context, setState) {
return SafeArea(
child: Consumer<crmLeadDetailsProvider>(
builder: (context, provider, child) {
child: Consumer2<crmLeadDetailsProvider,Editproductlistprovider>(
builder: (context, provider,editProvider, child) {
editProvider.editContactDetailsClicked = false;
return Container(
margin: EdgeInsets.only(
bottom: 15,
......@@ -2952,7 +2984,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
onTap:
provider.isLoading
? null
: () {
: () {HapticFeedback.selectionClick();
provider.isLoading = true;
provider
.crmLeadDetailsEditContactAPIFunction(
......@@ -3005,6 +3037,11 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
context,
listen: false,
);
final editprovider = Provider.of<Editproductlistprovider>(
context,
listen: false,
);
editprovider.editContactDetailsClicked = false;
provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode);
});
});
......@@ -3060,7 +3097,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
...List.generate(assetnames.length, (index) {
return ListTile(
onTap: () {
onTap: () {HapticFeedback.selectionClick();
Navigator.pop(context, true);
switch (index) {
case 0:
......@@ -3166,6 +3203,7 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
child: Consumer2<crmLeadDetailsProvider, Editproductlistprovider>(
builder: (context, provider, editProvider, child) {
void updatedAmountfun(value) {
editProvider.editProductDetailsClicked = false;
final price =
double.tryParse(
editProvider.addEditProductPriceController.text,
......@@ -3411,7 +3449,11 @@ class _LeadDetailsByModeState extends State<LeadDetailsByMode> {
context,
listen: false,
);
final editProvider = Provider.of<Editproductlistprovider>(
context,
listen: false,
);
editProvider.editProductDetailsClicked = false;
provider.crmLeadDetailsAPIFunction(context, widget.leadId, widget.mode);
});
});
......
......@@ -129,6 +129,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
children: [
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
_showFilterSheetNew(context);
},
child: SvgPicture.asset(
......@@ -166,6 +167,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
}
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -242,6 +244,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
flex: 1,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
launch(
'tel://${crmLists[index].mob1}',
);
......@@ -1258,7 +1261,6 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
provider.selectedSourceValue =
source.name!;
} else {
provider.selectedSourceId =
null;
provider.selectedSourceValue =
......@@ -1721,18 +1723,26 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
Expanded(
child: Text(
headings[jj],
textAlign: TextAlign.center,
textAlign:
TextAlign.center,
style: TextStyle(
fontSize: 14,
fontFamily:
"JakartaRegular",
color: AppColors.semi_black,
color:
AppColors
.semi_black,
),
),
),
if (_isFilterSelected(provider, jj))...[
if (_isFilterSelected(
provider,
jj,
)) ...[
Container(
margin: EdgeInsets.only(left: 5),
margin: EdgeInsets.only(
left: 5,
),
width: 8,
height: 8,
decoration: BoxDecoration(
......@@ -1740,7 +1750,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
shape: BoxShape.circle,
),
),
]
],
],
),
),
......@@ -1791,7 +1801,9 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
onChanged: (bool? value) {
setState(() {
provider.selectedLeadStatus =
value == true ? status : null;
value == true
? status
: null;
});
},
contentPadding:
......@@ -1829,7 +1841,9 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
onChanged: (bool? value) {
setState(() {
provider.selectedOpenStatus =
value == true ? status : null;
value == true
? status
: null;
});
},
contentPadding:
......@@ -1894,7 +1908,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider.selectedSource ==
provider
.selectedSource ==
source,
onChanged: (bool? value) {
setState(() {
......@@ -1904,7 +1919,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
} else {
provider.selectedSource =
null;
provider.referencesList
provider
.referencesList
.clear();
provider.selectedReference =
null;
......@@ -1913,8 +1929,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
provider.selectedReferenceValue =
null;
}
provider
.crmLeadListSourceOnReferenceAPIFunction(
provider.crmLeadListSourceOnReferenceAPIFunction(
context,
widget.mode,
provider
......
......@@ -403,6 +403,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
flex: 1,
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
_showTransferAccountSheet(
context,
provider.accountDetails.id!,
......@@ -424,6 +425,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
flex: 1,
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
editProvider.checkDropDownValues();
prefill();
await _showEditAccountSheet(
......@@ -669,9 +671,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded(
child: InkResponse(
child:
subHeadings4[j] == "Lead Age"
child: subHeadings4[j] == "Lead Age"
? Tooltip(
triggerMode:
TooltipTriggerMode
......@@ -709,7 +709,6 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
),
),
],
),
);
......@@ -720,6 +719,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
provider.showMoreDetails =
!provider.showMoreDetails;
},
......@@ -786,6 +786,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
Expanded(
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await addleadProvider
.crmProspectDetailsAddLeadsViewAPIFunction(
context,
......@@ -823,6 +824,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
var res = await Navigator.push(
context,
MaterialPageRoute(
......@@ -1092,6 +1094,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
] else ...[
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await addleadProvider
.crmProspectDetailsAddLeadsViewAPIFunction(
context,
......@@ -1143,7 +1146,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
if (contactNotEmpty) ...[
Expanded(
child: InkResponse(
onTap: () {
onTap:provider.addContactSelected?null: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
......@@ -1178,7 +1183,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
itemCount: provider.contactList.length,
itemBuilder: (context, lp) {
return InkResponse(
onTap: () async {
onTap:provider.addContactSelected?null: () async {
provider.addContactSelected = true;
HapticFeedback.selectionClick();
provider.editNameController.text =
provider.contactList[lp].name ?? "";
provider.editDesignationController.text =
......@@ -1300,7 +1307,9 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
] else ...[
InkResponse(
onTap: () {
onTap:provider.addContactSelected?null: () {
HapticFeedback.selectionClick();
provider.addContactSelected = true;
_showAddContactSheet(
context,
provider.accountDetails.id!,
......@@ -1899,6 +1908,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
return SafeArea(
child: Consumer<crmProspectDetailsProvider>(
builder: (context, provider, child) {
provider.addContactSelected = false;
return Container(
margin: EdgeInsets.only(
bottom: 15,
......@@ -2082,7 +2092,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
listen: false,
);
editProvider.crmLeadListViewAPIFunction(context, widget.mode);
provider.addContactSelected = false;
editProvider.crmProspectDetailsEditAccountViewAPIFunction(
context,
widget.leadId,
......@@ -2107,6 +2117,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
return SafeArea(
child: Consumer<crmProspectDetailsProvider>(
builder: (context, provider, child) {
provider.addContactSelected = false;
return Container(
margin: EdgeInsets.only(
bottom: 15,
......@@ -2293,7 +2304,7 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
listen: false,
);
editProvider.crmLeadListViewAPIFunction(context, widget.mode);
provider.addContactSelected = false;
editProvider.crmProspectDetailsEditAccountViewAPIFunction(
context,
widget.leadId,
......
......@@ -19,6 +19,7 @@ import 'ProspectDetailsByMode.dart';
class ProspectListByMode extends StatefulWidget {
final pageTitleName;
final mode;
const ProspectListByMode({super.key, this.pageTitleName, this.mode});
@override
......@@ -97,6 +98,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
children: [
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
_showFilterSheet(context);
},
child: SvgPicture.asset(
......@@ -106,7 +108,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
],
),
0xFFFFFFFF
0xFFFFFFFF,
),
backgroundColor: AppColors.scaffold_bg_color,
body:
......@@ -136,18 +138,15 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
// if(crmLists[index].aid=="1726"){
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => ProspectDetailsByMode(
pageTitleName:
widget.pageTitleName,
pageTitleName: widget.pageTitleName,
mode: widget.mode,
leadId:
provider
.accountList[index]
.aid,
leadId: provider.accountList[index].aid,
),
),
);
......@@ -199,7 +198,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
),
Text(
crmLists[index].mob1??"-",
crmLists[index].mob1 ?? "-",
maxLines: 1,
style: TextStyle(
fontFamily: "JakartaMedium",
......@@ -216,6 +215,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
flex: 1,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
launch(
'tel://${crmLists[index].mob1}',
);
......@@ -349,21 +349,16 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
int selectedIndex = isSelected.indexWhere(
(element) => element == true,
);
List<String> headings = [
"Mobile Number",
"Company Name",
];
if(widget.mode!="executive"){
List<String> headings = ["Mobile Number", "Company Name"];
if (widget.mode != "executive") {
headings.add("Employee");
}
return Container(
height: MediaQuery.of(context).size.height*0.3,
height: MediaQuery.of(context).size.height * 0.3,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Padding(
padding: EdgeInsets.only(left: 15),
child: Text(
......@@ -377,11 +372,13 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
const SizedBox(height: 20),
Expanded(
flex:4,
flex: 4,
child: Container(
decoration: BoxDecoration(
border: Border(
top: BorderSide(color: const Color(0xFFA5DAF9)),
top: BorderSide(
color: const Color(0xFFA5DAF9),
),
bottom: BorderSide(
color: const Color(0xFFA5DAF9),
),
......@@ -393,11 +390,13 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
Expanded(
flex: 3,
child: Column(
children: List.generate(headings.length, (jj) {
children: List.generate(headings.length, (
jj,
) {
return Expanded(
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
setState(() {
// Reset all to false
isSelected = List.generate(
......@@ -409,7 +408,8 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
});
},
child: Container(
padding: const EdgeInsets.symmetric(
padding:
const EdgeInsets.symmetric(
vertical: 7.5,
horizontal: 10,
),
......@@ -418,12 +418,10 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
left:
isSelected[jj]
? BorderSide(
color:
AppColors
.app_blue,
width: 5.0,
)
: const BorderSide(
color:
......@@ -451,7 +449,8 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 14,
fontFamily: "JakartaRegular",
fontFamily:
"JakartaRegular",
color: AppColors.semi_black,
),
),
......@@ -472,12 +471,12 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
child: Column(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisAlignment:
MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
if (selectedIndex == 0) ...[
SizedBox(height: 10,),
SizedBox(height: 10),
textControllerWidget(
context,
provider.mobileNumberController,
......@@ -490,7 +489,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
.digitsOnly,
),
] else if (selectedIndex == 1) ...[
SizedBox(height: 10,),
SizedBox(height: 10),
textControllerWidget(
context,
provider.companyNameController,
......@@ -501,17 +500,23 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
false,
null,
),
]else if (widget.mode != "executive") ...[
] else if (widget.mode !=
"executive") ...[
...provider.employeesList.map((
employee,
) {
return SizedBox(
height: 35,
child: CheckboxListTile(
activeColor: AppColors.app_blue,
controlAffinity: ListTileControlAffinity.leading,
activeColor:
AppColors.app_blue,
controlAffinity:
ListTileControlAffinity
.leading,
checkboxShape: CircleBorder(
side: BorderSide(width:0.5 )
side: BorderSide(
width: 0.5,
),
),
title: Text(
employee.name!,
......@@ -520,7 +525,8 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
),
value:
provider.selectedEmployees ==
provider
.selectedEmployees ==
employee,
onChanged: (bool? value) {
setState(() {
......@@ -532,8 +538,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
provider.selectedEmployeeValue =
employee.name!;
}
provider
.crmProspectListAPIFunction(
provider.crmProspectListAPIFunction(
context,
widget.mode,
provider
......@@ -541,12 +546,12 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
);
});
},
contentPadding: EdgeInsets.zero,
contentPadding:
EdgeInsets.zero,
),
);
}).toList(),
]
],
],
),
),
......@@ -562,6 +567,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
provider.crmProspectListAPIFunction(
context,
widget.mode,
......
......@@ -174,6 +174,55 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
value!.id.toString(),
);
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.productSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
child: TextFormField(
controller:
provider
.productSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Product...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.productSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
......@@ -242,7 +291,7 @@ class _AddleadproductscreenState extends State<Addleadproductscreen> {
FloatingActionButtonLocation.centerFloat,
floatingActionButton: InkWell(
onTap: () {
HapticFeedback.selectionClick();
if (provider.selectedProducts != null) {
final productData = {
......
......@@ -30,6 +30,7 @@ class Addleadsprospectsscreen extends StatefulWidget {
class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(20, (index) => FocusNode());
int _currentStep = 0;
final _formKey = GlobalKey<FormState>();
Map _source = {ConnectivityResult.mobile: true};
......@@ -44,6 +45,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
_nameController.dispose();
_emailController.dispose();
_addressController.dispose();
focusNodes.map((e) => e.dispose(),);
super.dispose();
}
......@@ -290,6 +292,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.name,
false,
null,
focusNodes[0],
focusNodes[1],
TextInputAction.next
),
errorWidget(context, provider.companynameError),
......@@ -302,6 +307,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.name,
false,
null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
),
errorWidget(context, provider.nameError),
......@@ -314,8 +322,8 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.phone,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
focusNodes[2],
focusNodes[3],
TextInputAction.done,
10,
),
......@@ -329,7 +337,10 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
provider.onChangemailId,
TextInputType.emailAddress,
false,
null,
null,focusNodes[3],
focusNodes[4],
TextInputAction.next,
),
errorWidget(context, provider.mailIdError),
......@@ -342,6 +353,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.text,
false,
null,
focusNodes[4],
null,
TextInputAction.done,
),
errorWidget(context, provider.designationError),
],
......@@ -374,9 +388,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.phone,
false,
FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.done,
focusNodes[5],
focusNodes[6],
TextInputAction.next,
10,
),
......@@ -391,6 +405,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.phone,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[6],
null,
TextInputAction.done,
),
errorWidget(context, provider.TelephoneError),
TextWidget(context, "Source"),
......@@ -448,6 +465,55 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
}
},
isExpanded: true,
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.sourceSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
child: TextFormField(
controller:
provider
.sourceSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Source...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.sourceSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
......@@ -505,6 +571,55 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
}
},
isExpanded: true,
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.referenceSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
child: TextFormField(
controller:
provider
.referenceSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Reference...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.referenceSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
......@@ -571,6 +686,55 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
}
},
isExpanded: true,
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.teamSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
child: TextFormField(
controller:
provider
.teamSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Team...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.teamSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
......@@ -627,6 +791,55 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
}
},
isExpanded: true,
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider
.segmentSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(
8,
),
child: TextFormField(
controller:
provider
.segmentSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Segment...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(
8,
),
),
),
),
),
searchMatchFn: (
item,
searchValue,
) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue
.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.segmentSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
......@@ -1251,6 +1464,9 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
TextInputType.streetAddress,
false,
null,
focusNodes[7],
null,
TextInputAction.done,
),
errorWidget(context, provider.addressError),
......@@ -1303,6 +1519,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
if (_currentStep == 2) ...[
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
if (provider.validateStep3()) {
if(provider.productRows.isNotEmpty){
provider.crmAddNewLeadsAndProspectsAPIFunction(
......@@ -1356,6 +1573,7 @@ class _AddleadsprospectsscreenState extends State<Addleadsprospectsscreen> {
] else ...[
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
setState(() {
if (_currentStep == 0) {
if (provider.validateStep1()) {
......
......@@ -4,6 +4,7 @@ import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dotted_line/dotted_line.dart';
import 'package:dropdown_button2/dropdown_button2.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:generp/Notifiers/crmProvider/appointmentCalendarProvider.dart';
import 'package:generp/Utils/app_colors.dart';
......@@ -222,6 +223,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
itemBuilder: (context, index) {
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -309,6 +311,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
flex: 1,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
launch(
'tel://${provider.appointmentList[index].mob1}',
);
......@@ -474,6 +477,7 @@ class _AppointmentcalendarState extends State<Appointmentcalendar> {
return InkResponse(
onTap: () {
HapticFeedback.selectionClick();
final formattedDate = DateFormat('yyyy-MM-dd').format(date);
print(formattedDate);
provider.setSelectedDate(date);
......
......@@ -103,7 +103,11 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
crossAxisAlignment: CrossAxisAlignment.center,
children: [
InkResponse(
onTap: () => Navigator.pop(context, true),
onTap: () {
HapticFeedback.selectionClick();
Navigator.pop(context, true);
},
child: SvgPicture.asset(
"assets/svg/appbar_back_button.svg",
height: 25,
......@@ -111,7 +115,10 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
SizedBox(width: 10),
InkResponse(
onTap: () => Navigator.pop(context, true),
onTap: () {
HapticFeedback.selectionClick();
Navigator.pop(context, true);
},
child: Text(
"CRM",
style: TextStyle(
......@@ -129,6 +136,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
preferredSize: Size.fromHeight(50),
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
print("Tap");
Navigator.push(
context,
......@@ -256,6 +264,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
if (provider.allLeads[jndex].filter!.pageName !=
"") {
if (provider.allLeads[jndex].filter!.pageName!
......@@ -306,7 +315,9 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Followuplistontype(type: "Visit"),
builder:
(context) =>
Followuplistontype(type: "Visit"),
settings: RouteSettings(
name: "Generatedquoteslist",
),
......@@ -317,7 +328,9 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Followuplistontype(type: "Phone"),
builder:
(context) =>
Followuplistontype(type: "Phone"),
settings: RouteSettings(
name: "Generatedquoteslist",
),
......@@ -487,7 +500,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
// },
// ),
Container(
height: MediaQuery.of(context).size.height * 0.22,
height: MediaQuery.of(context).size.height * 0.25,
margin: EdgeInsets.symmetric(horizontal: 10),
child: Row(
children: [
......@@ -495,8 +508,6 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
child: Column(
children: [
Expanded(
child: InkResponse(
onTap: () {},
child: Container(
padding: EdgeInsets.symmetric(horizontal: 5),
decoration: BoxDecoration(
......@@ -509,6 +520,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
flex: 2,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -538,7 +550,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
),
Text(
"Details,\nFollowup",
"Appointments,\nFollowups",
// "Product and \nservice orders",
style: TextStyle(
color: AppColors.grey_semi,
......@@ -559,10 +571,8 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
),
),
),
SizedBox(height: 10),
Expanded(
child: InkResponse(
child: Container(
padding: EdgeInsets.symmetric(horizontal: 5),
decoration: BoxDecoration(
......@@ -575,6 +585,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
flex: 2,
child: InkResponse(
onTap: () {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -626,7 +637,6 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
),
),
),
),
],
),
),
......@@ -634,6 +644,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
Expanded(
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -719,6 +730,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
Spacer(),
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -773,6 +785,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
final longitude = location.lng;
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -835,6 +848,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
Expanded(
child: InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -884,6 +898,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
SizedBox(height: 10),
InkResponse(
onTap: () {
HapticFeedback.selectionClick();
Navigator.push(
context,
MaterialPageRoute(
......@@ -951,6 +966,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
Spacer(),
InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -1009,6 +1025,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
];
return InkResponse(
onTap: () async {
HapticFeedback.selectionClick();
await Navigator.push(
context,
MaterialPageRoute(
......@@ -1071,6 +1088,7 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
"${provider.pendingTasksLists[index].appdate}",
textAlign: TextAlign.right,
maxLines: 1,
style: TextStyle(
color: AppColors.grey_semi,
fontFamily: "JakartaRegular",
......@@ -1117,7 +1135,8 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
child: Text(
"${provider.pendingTasksLists[index].anote}",
textAlign: TextAlign.right,
maxLines: 1,
maxLines: 2,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: AppColors.semi_black,
fontFamily: "JakartaRegular",
......
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