Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Sai Srinivas
GEN_ERP_2025
Commits
55280429
Commit
55280429
authored
Aug 20, 2025
by
Sai Srinivas
Browse files
20-08-2025 By Sai Srinivas
Test Cases CRM
parent
6ace5c45
Changes
31
Hide whitespace changes
Inline
Side-by-side
lib/Notifiers/LogoutNotifier.dart
View file @
55280429
...
...
@@ -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
,
...
...
lib/Notifiers/crmProvider/addNewLeadsandProspectsProvider.dart
View file @
55280429
...
...
@@ -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
();
...
...
lib/Notifiers/crmProvider/crmLeadDetailsProvider.dart
View file @
55280429
...
...
@@ -524,7 +524,7 @@ class crmLeadDetailsProvider extends ChangeNotifier {
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
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"
)));
...
...
lib/Notifiers/crmProvider/crmProspectDetailsProvider.dart
View file @
55280429
...
...
@@ -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:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Notifiers/crmProvider/editProductListProvider.dart
View file @
55280429
...
...
@@ -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
();
...
...
lib/Notifiers/crmProvider/followUpUpdateProvider.dart
View file @
55280429
...
...
@@ -339,7 +339,7 @@ class followUpUpdateProvider extends ChangeNotifier {
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Notifiers/financeProvider/RequestionListProvider.dart
View file @
55280429
...
...
@@ -665,7 +665,7 @@ class Requestionlistprovider extends ChangeNotifier {
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Notifiers/financeProvider/paymentReceiptsProvider.dart
View file @
55280429
...
...
@@ -947,7 +947,7 @@ class Paymentreceiptsprovider extends ChangeNotifier {
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Notifiers/ordersProvider/addOrderProvider.dart
View file @
55280429
...
...
@@ -1874,7 +1874,7 @@ String? productsEmptyError ;
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Notifiers/ordersProvider/addPaymentProvider.dart
View file @
55280429
...
...
@@ -596,7 +596,7 @@ class Addpaymentprovider extends ChangeNotifier{
context:
context
,
builder:
(
BuildContext
context
)
=>
Container
(
height:
2
16
,
height:
2
50
,
padding:
const
EdgeInsets
.
only
(
top:
6.0
),
margin:
EdgeInsets
.
only
(
bottom:
MediaQuery
.
of
(
context
).
viewInsets
.
bottom
,
...
...
lib/Utils/commonWidgets.dart
View file @
55280429
...
...
@@ -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
);
},
...
...
lib/screens/HomeScreen.dart
View file @
55280429
...
...
@@ -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
);
...
...
lib/screens/crm/LeadDetailsByMode.dart
View file @
55280429
...
...
@@ -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
);
});
});
...
...
lib/screens/crm/LeadListByMode.dart
View file @
55280429
...
...
@@ -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
=
...
...
@@ -1594,7 +1596,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
Future
<
void
>
_showFilterSheetNew
(
BuildContext
context
)
{
List
<
bool
>
isSelected
=
List
.
generate
(
9
,
(
index
)
=>
index
==
0
?
true
:
false
,
(
index
)
=>
index
==
0
?
true
:
false
,
);
return
showModalBottomSheet
(
...
...
@@ -1616,7 +1618,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
child:
Consumer
<
Leadlistprovider
>(
builder:
(
context
,
provider
,
child
)
{
int
selectedIndex
=
isSelected
.
indexWhere
(
(
element
)
=>
element
==
true
,
(
element
)
=>
element
==
true
,
);
final
headings
=
[
"Lead Status"
,
...
...
@@ -1667,52 +1669,52 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
flex:
3
,
child:
Column
(
children:
List
.
generate
(
headings
.
length
,
(
jj
,
)
{
jj
,
)
{
return
Expanded
(
child:
InkResponse
(
onTap:
()
{
setState
(()
{
isSelected
=
List
.
generate
(
headings
.
length
,
(
index
)
=>
false
,
(
index
)
=>
false
,
);
isSelected
[
jj
]
=
true
;
});
},
child:
Container
(
padding:
const
EdgeInsets
.
symmetric
(
vertical:
7.5
,
horizontal:
10
,
),
const
EdgeInsets
.
symmetric
(
vertical:
7.5
,
horizontal:
10
,
),
decoration:
BoxDecoration
(
border:
Border
(
left:
isSelected
[
jj
]
?
BorderSide
(
color:
AppColors
.
app_blue
,
width:
5.0
,
)
:
const
BorderSide
(
color:
Colors
.
transparent
,
),
isSelected
[
jj
]
?
BorderSide
(
color:
AppColors
.
app_blue
,
width:
5.0
,
)
:
const
BorderSide
(
color:
Colors
.
transparent
,
),
bottom:
jj
==
headings
.
length
-
1
?
const
BorderSide
(
color:
Colors
.
transparent
,
)
:
const
BorderSide
(
color:
Color
(
0xFFA5DAF9
,
),
),
jj
==
headings
.
length
-
1
?
const
BorderSide
(
color:
Colors
.
transparent
,
)
:
const
BorderSide
(
color:
Color
(
0xFFA5DAF9
,
),
),
),
color:
const
Color
(
0xFFE6F6FF
),
),
...
...
@@ -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
,
"JakartaRegular"
,
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
,
),
),
]
]
,
],
),
),
...
...
@@ -1758,21 +1768,21 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
CrossAxisAlignment
.
start
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
if
(
selectedIndex
==
0
)
...[
...
provider
.
leadStatusList
.
map
((
status
,
)
{
status
,
)
{
return
SizedBox
(
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -1785,32 +1795,34 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedLeadStatus
==
provider
.
selectedLeadStatus
==
status
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
provider
.
selectedLeadStatus
=
value
==
true
?
status
:
null
;
value
==
true
?
status
:
null
;
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
]
else
if
(
selectedIndex
==
1
)
...[
...
provider
.
openStatusList
.
map
((
status
,
)
{
status
,
)
{
return
SizedBox
(
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -1823,17 +1835,19 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedOpenStatus
==
provider
.
selectedOpenStatus
==
status
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
provider
.
selectedOpenStatus
=
value
==
true
?
status
:
null
;
value
==
true
?
status
:
null
;
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
@@ -1868,8 +1882,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
)
else
...
provider
.
sourcesList
.
map
((
source
,
)
{
source
,
)
{
if
(
source
==
null
||
source
.
id
==
null
||
source
.
name
==
null
)
...
...
@@ -1878,10 +1892,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -1894,7 +1908,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedSource
==
provider
.
selectedSource
==
source
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
...
...
@@ -1903,18 +1918,18 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
source
;
}
else
{
provider
.
selectedSource
=
null
;
provider
.
referencesList
null
;
provider
.
referencesList
.
clear
();
provider
.
selectedReference
=
null
;
null
;
provider
.
selectedReferenceId
=
null
;
null
;
provider
.
selectedReferenceValue
=
null
;
null
;
}
provider
.
crmLeadListSourceOnReferenceAPIFunction
(
provider
.
crmLeadListSourceOnReferenceAPIFunction
(
context
,
widget
.
mode
,
provider
...
...
@@ -1923,7 +1938,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
@@ -1937,8 +1952,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
]
else
...[
...
provider
.
referencesList
.
map
((
reference
,
)
{
reference
,
)
{
if
(
reference
==
null
||
reference
.
id
==
null
||
reference
.
name
==
null
)
...
...
@@ -1947,10 +1962,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -1963,19 +1978,19 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedReference
==
provider
.
selectedReference
==
reference
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
provider
.
selectedReference
=
value
==
true
?
reference
:
null
;
value
==
true
?
reference
:
null
;
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
@@ -1996,10 +2011,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -2012,7 +2027,7 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedTeam
==
provider
.
selectedTeam
==
team
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
...
...
@@ -2021,27 +2036,27 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
team
;
}
else
{
provider
.
selectedTeam
=
null
;
null
;
provider
.
segmentsList
.
clear
();
provider
.
selectedSegment
=
null
;
null
;
provider
.
selectedSegmentId
=
null
;
null
;
provider
.
selectedSegmentValue
=
null
;
null
;
}
provider
.
crmLeadListSegmentOnTeamAPIFunction
(
context
,
widget
.
mode
,
provider
.
selectedTeamId
,
);
context
,
widget
.
mode
,
provider
.
selectedTeamId
,
);
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
@@ -2055,8 +2070,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
]
else
...[
...
provider
.
segmentsList
.
map
((
segment
,
)
{
segment
,
)
{
if
(
segment
==
null
||
segment
.
id
==
null
||
segment
.
name
==
null
)
...
...
@@ -2065,10 +2080,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -2081,19 +2096,19 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedSegment
==
provider
.
selectedSegment
==
segment
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
provider
.
selectedSegment
=
value
==
true
?
segment
:
null
;
value
==
true
?
segment
:
null
;
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
@@ -2107,8 +2122,8 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
)
else
...
provider
.
employeesList
.
map
((
employee
,
)
{
employee
,
)
{
if
(
employee
==
null
||
employee
.
id
==
null
||
employee
.
name
==
null
)
...
...
@@ -2117,10 +2132,10 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
...
...
@@ -2133,19 +2148,19 @@ class _LeadlistbymodeState extends State<Leadlistbymode> {
),
),
value:
provider
.
selectedEmployee
==
provider
.
selectedEmployee
==
employee
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
provider
.
selectedEmployee
=
value
==
true
?
employee
:
null
;
value
==
true
?
employee
:
null
;
});
},
contentPadding:
EdgeInsets
.
zero
,
EdgeInsets
.
zero
,
),
);
}).
toList
(),
...
...
lib/screens/crm/ProspectDetailsByMode.dart
View file @
55280429
...
...
@@ -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,46 +671,43 @@ class ProspectDetailsByModeState extends State<ProspectDetailsByMode> {
),
),
Expanded
(
child:
InkResponse
(
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
,
),
),
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
,
),
),
),
),
],
),
...
...
@@ -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
,
...
...
lib/screens/crm/ProspectListByMode.dart
View file @
55280429
...
...
@@ -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,19 +138,16 @@ 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
,
mode:
widget
.
mode
,
leadId:
provider
.
accountList
[
index
]
.
aid
,
),
pageTitleName:
widget
.
pageTitleName
,
mode:
widget
.
mode
,
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}
'
,
);
...
...
@@ -325,7 +325,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
Future
<
void
>
_showFilterSheet
(
BuildContext
context
)
{
List
<
bool
>
isSelected
=
List
.
generate
(
2
,
(
index
)
=>
index
==
0
?
true
:
false
,
(
index
)
=>
index
==
0
?
true
:
false
,
);
return
showModalBottomSheet
(
...
...
@@ -347,23 +347,18 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
child:
Consumer
<
ProspectListProvider
>(
builder:
(
context
,
provider
,
child
)
{
int
selectedIndex
=
isSelected
.
indexWhere
(
(
element
)
=>
element
==
true
,
(
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,55 +390,56 @@ 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
(
headings
.
length
,
(
index
)
=>
false
,
(
index
)
=>
false
,
);
// Set the clicked item to true
isSelected
[
jj
]
=
true
;
});
},
child:
Container
(
padding:
const
EdgeInsets
.
symmetric
(
vertical:
7.5
,
horizontal:
10
,
),
padding:
const
EdgeInsets
.
symmetric
(
vertical:
7.5
,
horizontal:
10
,
),
decoration:
BoxDecoration
(
border:
Border
(
left:
isSelected
[
jj
]
?
BorderSide
(
color:
AppColors
.
app_blue
,
width:
5.0
,
)
:
const
BorderSide
(
color:
Colors
.
transparent
,
),
isSelected
[
jj
]
?
BorderSide
(
color:
AppColors
.
app_blue
,
width:
5.0
,
)
:
const
BorderSide
(
color:
Colors
.
transparent
,
),
bottom:
jj
==
headings
.
length
-
1
?
const
BorderSide
(
color:
Colors
.
transparent
,
)
:
const
BorderSide
(
color:
Color
(
0xFFA5DAF9
,
),
),
jj
==
headings
.
length
-
1
?
const
BorderSide
(
color:
Colors
.
transparent
,
)
:
const
BorderSide
(
color:
Color
(
0xFFA5DAF9
,
),
),
),
color:
const
Color
(
0xFFE6F6FF
),
),
...
...
@@ -451,7 +449,8 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
textAlign:
TextAlign
.
center
,
style:
TextStyle
(
fontSize:
14
,
fontFamily:
"JakartaRegular"
,
fontFamily:
"JakartaRegular"
,
color:
AppColors
.
semi_black
,
),
),
...
...
@@ -471,13 +470,13 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
CrossAxisAlignment
.
center
,
mainAxisAlignment:
MainAxisAlignment
.
center
,
mainAxisSize:
MainAxisSize
.
min
,
children:
[
if
(
selectedIndex
==
0
)
...[
SizedBox
(
height:
10
,),
if
(
selectedIndex
==
0
)
...[
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,52 +500,58 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
false
,
null
,
),
]
else
if
(
widget
.
mode
!=
"executive"
)
...[
...
provider
.
employeesList
.
map
((
employee
,
)
{
return
SizedBox
(
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
)
),
title:
Text
(
employee
.
name
!,
style:
const
TextStyle
(
fontSize:
14
,
),
),
value:
provider
.
selectedEmployees
==
employee
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
if
(
value
==
true
)
{
provider
.
selectedEmployees
=
employee
;
provider
.
selectedEmployeeId
=
employee
.
id
!;
provider
.
selectedEmployeeValue
=
employee
.
name
!;
}
provider
.
crmProspectListAPIFunction
(
context
,
widget
.
mode
,
provider
.
selectedEmployeeId
,
);
});
},
contentPadding:
EdgeInsets
.
zero
,
),
);
}).
toList
(),
]
]
else
if
(
widget
.
mode
!=
"executive"
)
...[
...
provider
.
employeesList
.
map
((
employee
,
)
{
return
SizedBox
(
height:
35
,
child:
CheckboxListTile
(
activeColor:
AppColors
.
app_blue
,
controlAffinity:
ListTileControlAffinity
.
leading
,
checkboxShape:
CircleBorder
(
side:
BorderSide
(
width:
0.5
,
),
),
title:
Text
(
employee
.
name
!,
style:
const
TextStyle
(
fontSize:
14
,
),
),
value:
provider
.
selectedEmployees
==
employee
,
onChanged:
(
bool
?
value
)
{
setState
(()
{
if
(
value
==
true
)
{
provider
.
selectedEmployees
=
employee
;
provider
.
selectedEmployeeId
=
employee
.
id
!;
provider
.
selectedEmployeeValue
=
employee
.
name
!;
}
provider
.
crmProspectListAPIFunction
(
context
,
widget
.
mode
,
provider
.
selectedEmployeeId
,
);
});
},
contentPadding:
EdgeInsets
.
zero
,
),
);
}).
toList
(),
],
],
),
),
...
...
@@ -562,6 +567,7 @@ class _ProspectListByModeState extends State<ProspectListByMode> {
),
child:
InkResponse
(
onTap:
()
{
HapticFeedback
.
selectionClick
();
provider
.
crmProspectListAPIFunction
(
context
,
widget
.
mode
,
...
...
lib/screens/crm/addLeadProductScreen.dart
View file @
55280429
...
...
@@ -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
=
{
...
...
lib/screens/crm/addLeadsProspectsScreen.dart
View file @
55280429
...
...
@@ -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
.
do
ne
,
focusNodes
[
5
]
,
focusNodes
[
6
]
,
TextInputAction
.
ne
xt
,
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
())
{
...
...
lib/screens/crm/appointmentCalendar.dart
View file @
55280429
...
...
@@ -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
);
...
...
lib/screens/crm/crmDashboard.dart
View file @
55280429
...
...
@@ -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.2
2
,
height:
MediaQuery
.
of
(
context
).
size
.
height
*
0.2
5
,
margin:
EdgeInsets
.
symmetric
(
horizontal:
10
),
child:
Row
(
children:
[
...
...
@@ -495,135 +508,132 @@ class _CrmdashboardScreenState extends State<CrmdashboardScreen> {
child:
Column
(
children:
[
Expanded
(
child:
InkResponse
(
onTap:
()
{},
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
Row
(
children:
[
Expanded
(
flex:
2
,
child:
InkResponse
(
onTap:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Leadlistbymode
(
mode:
"executive"
,
pageTitleName:
"Lead List"
,
),
),
);
},
child:
Container
(
padding:
EdgeInsets
.
only
(
top:
15
,
left:
10
,
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
"Lead List"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
14
,
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
Row
(
children:
[
Expanded
(
flex:
2
,
child:
InkResponse
(
onTap:
()
{
HapticFeedback
.
selectionClick
();
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
Leadlistbymode
(
mode:
"executive"
,
pageTitleName:
"Lead List"
,
),
),
);
},
child:
Container
(
padding:
EdgeInsets
.
only
(
top:
15
,
left:
10
,
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
"Lead List"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
14
,
),
Text
(
"Details,
\n
Followup"
,
// "Product and \nservice order
s",
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontSize:
12
,
)
,
),
Text
(
"Appointments,
\n
Followup
s"
,
// "Product and \nservice orders",
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontSize:
12
,
),
]
,
)
,
)
,
]
,
),
),
),
Expanded
(
child:
SvgPicture
.
asset
(
"assets/svg/crm/lead_list_ic.svg"
,
)
,
),
Expanded
(
child:
SvgPicture
.
asset
(
"assets/svg/crm/lead_list_ic.svg"
,
),
]
,
)
,
)
,
]
,
),
),
),
SizedBox
(
height:
10
),
Expanded
(
child:
InkResponse
(
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
Row
(
children:
[
Expanded
(
flex:
2
,
child:
InkResponse
(
onTap:
()
{
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
ProspectListByMode
(
mode:
"executive"
,
pageTitleName:
"Account List"
,
),
),
);
},
child:
Container
(
padding:
EdgeInsets
.
only
(
top:
15
,
left:
10
,
child:
Container
(
padding:
EdgeInsets
.
symmetric
(
horizontal:
5
),
decoration:
BoxDecoration
(
color:
Colors
.
white
,
borderRadius:
BorderRadius
.
circular
(
20
),
),
child:
Row
(
children:
[
Expanded
(
flex:
2
,
child:
InkResponse
(
onTap:
()
{
HapticFeedback
.
selectionClick
();
Navigator
.
push
(
context
,
MaterialPageRoute
(
builder:
(
context
)
=>
ProspectListByMode
(
mode:
"executive"
,
pageTitleName:
"Account List"
,
),
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
"Account List"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
14
,
),
);
},
child:
Container
(
padding:
EdgeInsets
.
only
(
top:
15
,
left:
10
,
),
child:
Column
(
crossAxisAlignment:
CrossAxisAlignment
.
start
,
children:
[
Text
(
"Account List"
,
style:
TextStyle
(
color:
AppColors
.
app_blue
,
fontSize:
14
,
),
Text
(
"Account Details,
\n
Lead Details"
,
// "Assigned agent
s,
\n
performance
",
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontSize:
12
,
)
,
),
Text
(
"Account Detail
s,
\n
Lead Details
"
,
// "Assigned agents, \nperformance",
style:
TextStyle
(
color:
AppColors
.
grey_semi
,
fontSize:
12
,
),
]
,
)
,
)
,
]
,
),
),
),
Expanded
(
child:
SvgPicture
.
asset
(
"assets/svg/crm/account_list_ic.svg"
,
)
,
),
Expanded
(
child:
SvgPicture
.
asset
(
"assets/svg/crm/account_list_ic.svg"
,
),
]
,
)
,
)
,
]
,
),
),
),
...
...
@@ -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"
,
...
...
Prev
1
2
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment