Commit 722d6c9c authored by Sai Srinivas's avatar Sai Srinivas
Browse files

27-06-2025 By Sai Srinivas

Common Module Test cases.
parent 2c0d16b2
...@@ -50,6 +50,7 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -50,6 +50,7 @@ class Accountslistprovider extends ChangeNotifier {
String? altMobError; String? altMobError;
String? teleError; String? teleError;
String? mailError; String? mailError;
String? addMoreDetailsError;
List<States> _states = []; List<States> _states = [];
List<Districts> _districts = []; List<Districts> _districts = [];
...@@ -86,6 +87,9 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -86,6 +87,9 @@ class Accountslistprovider extends ChangeNotifier {
set isVisible(bool value) { set isVisible(bool value) {
_isVisible = value; _isVisible = value;
if(value==true){
addMoreDetailsError = null;
}
notifyListeners(); notifyListeners();
} }
...@@ -270,6 +274,7 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -270,6 +274,7 @@ class Accountslistprovider extends ChangeNotifier {
} }
} catch (e, s) {} } catch (e, s) {}
} }
bool hasFilledAdditionalDetails = false;
bool _submitClicked = false; bool _submitClicked = false;
bool get submitClickced => _submitClicked; bool get submitClickced => _submitClicked;
...@@ -333,6 +338,21 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -333,6 +338,21 @@ class Accountslistprovider extends ChangeNotifier {
} }
} }
void checkAdditionalDetailsFilled() {
hasFilledAdditionalDetails = bankNameController.text.trim().isNotEmpty &&
branchNameController.text.trim().isNotEmpty &&
bankIfscCotroller.text.trim().isNotEmpty &&
bankHolderNameController.text.trim().isNotEmpty &&
bankAcNumberController.text.trim().isNotEmpty &&
bankUpiController.text.trim().isNotEmpty &&
contactPersonController.text.trim().isNotEmpty &&
contectPersonDesignationController.text.trim().isNotEmpty &&
contectPersonAltMobController.text.trim().isNotEmpty;
// && contectPersonTeleController.text.trim().isNotEmpty
// && contectPersonMailController.text.trim().isNotEmpty;
notifyListeners();
}
bool validatereceiptForm(BuildContext context) { bool validatereceiptForm(BuildContext context) {
accountError = null; accountError = null;
nameError = null; nameError = null;
...@@ -352,6 +372,7 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -352,6 +372,7 @@ class Accountslistprovider extends ChangeNotifier {
altMobError = null; altMobError = null;
teleError = null; teleError = null;
mailError = null; mailError = null;
addMoreDetailsError = null;
bool isValid = true; bool isValid = true;
if (_selectedAccountType == null || _selectedAccountType!.isEmpty) { if (_selectedAccountType == null || _selectedAccountType!.isEmpty) {
accountError = "Please select an Account"; accountError = "Please select an Account";
...@@ -382,37 +403,71 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -382,37 +403,71 @@ class Accountslistprovider extends ChangeNotifier {
addressError = "Please Enter an Address"; addressError = "Please Enter an Address";
isValid = false; isValid = false;
} }
checkAdditionalDetailsFilled();
if (bankNameController.text.trim().isEmpty) { if (!_isVisible && !hasFilledAdditionalDetails) {
banknameError = "Please Enter a Bank Name"; addMoreDetailsError = "Please Add More Details to Continue";
isValid = false; isValid = false;
} }
if(_isVisible) {
if (bankNameController.text
.trim()
.isEmpty) {
banknameError = "Please Enter a Bank Name";
isValid = false;
}
if (branchNameController.text
.trim()
.isEmpty) {
bankBranchError = "Please Enter Branch Name";
isValid = false;
}
if (bankIfscCotroller.text
.trim()
.isEmpty) {
bankIFSCError = "Please Enter Bank IFSC";
isValid = false;
}
if (bankHolderNameController.text
.trim()
.isEmpty) {
bankHolderNameError = "Please Enter Account Holder Name";
isValid = false;
}
if (bankAcNumberController.text
.trim()
.isEmpty) {
bankAcNumberError = "Please Enter Bank Account Number";
isValid = false;
}
if (bankUpiController.text
.trim()
.isEmpty) {
upiError = "Please Enter UPI ID";
isValid = false;
}
if (contactPersonController.text
.trim()
.isEmpty) {
contactPersonError = "Please Enter Contact Person Name";
isValid = false;
}
if (contectPersonDesignationController.text
.trim()
.isEmpty) {
desigantionError = "Please Enter Designation";
isValid = false;
}
if (contectPersonAltMobController.text
.trim()
.isEmpty) {
altMobError = "Please Enter Mobile Number";
isValid = false;
}
if (branchNameController.text.trim().isEmpty) {
bankBranchError = "Please Enter Branch Name";
isValid = false;
}
if (bankIfscCotroller.text.trim().isEmpty) {
bankIFSCError = "Please Enter Bank IFSC";isValid = false;
}
if (bankHolderNameController.text.trim().isEmpty) {
bankHolderNameError = "Please Enter Account Holder Name";isValid = false;
}
if (bankAcNumberController.text.trim().isEmpty) {
bankAcNumberError= "Please Enter Bank Account Number"; isValid = false;
}
if (bankUpiController.text.trim().isEmpty) {
upiError= "Please Enter UPI ID"; isValid = false;
}
if (contactPersonController.text.trim().isEmpty) {
contactPersonError= "Please Enter Contact Person Name"; isValid = false;
}
if (contectPersonDesignationController.text.trim().isEmpty) {
desigantionError= "Please Enter Designation"; isValid = false;
}
if (contectPersonAltMobController.text.trim().isEmpty) {
altMobError= "Please Enter Mobile Number"; isValid = false;
} }
// if (contectPersonTeleController.text.trim().isEmpty) { // if (contectPersonTeleController.text.trim().isEmpty) {
// teleError= "Please Enter Telephone"; isValid = false; // teleError= "Please Enter Telephone"; isValid = false;
// } // }
...@@ -440,54 +495,65 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -440,54 +495,65 @@ class Accountslistprovider extends ChangeNotifier {
void updateBankName(String value) { void updateBankName(String value) {
banknameError = null; banknameError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateBankBranch(String value) { void updateBankBranch(String value) {
bankBranchError = null; bankBranchError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateIFSC(String value) { void updateIFSC(String value) {
bankIFSCError = null; bankIFSCError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateHolder(String value) { void updateHolder(String value) {
bankHolderNameError = null; bankHolderNameError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateNumber(String value) { void updateNumber(String value) {
bankAcNumberError = null; bankAcNumberError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateUPI(String value) { void updateUPI(String value) {
upiError = null; upiError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateContactPerson(String value){ void updateContactPerson(String value){
contactPersonError = null; contactPersonError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateDesignation(String value){ void updateDesignation(String value){
desigantionError = null; desigantionError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateAltMobile(String value){ void updateAltMobile(String value){
altMobError = null; altMobError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateTeleMobile(String value){ void updateTeleMobile(String value){
teleError = null; teleError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
void updateMail(String value){ void updateMail(String value){
mailError = null; mailError = null;
checkAdditionalDetailsFilled();
notifyListeners(); notifyListeners();
} }
...@@ -575,6 +641,7 @@ class Accountslistprovider extends ChangeNotifier { ...@@ -575,6 +641,7 @@ class Accountslistprovider extends ChangeNotifier {
altMobError = null; altMobError = null;
teleError = null; teleError = null;
mailError = null; mailError = null;
addMoreDetailsError = null;
ChechkDropdownValues(); ChechkDropdownValues();
notifyListeners(); notifyListeners();
......
import 'package:flutter/material.dart';
@immutable
class ShakeWidget extends StatelessWidget {
final Duration duration;
final double deltaX;
final Widget child;
final Curve curve;
const ShakeWidget({
required Key key,
this.duration = const Duration(milliseconds: 100),
this.deltaX = 20,
this.curve = Curves.bounceOut,
required this.child,
}) : super(key: key);
/// convert 0-1 to 0-1-0
double shake(double animation) =>
2 * (0.5 - (0.5 - curve.transform(animation)).abs());
@override
Widget build(BuildContext context) {
return TweenAnimationBuilder<double>(
key: key,
tween: Tween(begin: 0.0, end: 1.0),
duration: duration,
builder: (context, animation, child) => Transform.translate(
offset: Offset(deltaX * shake(animation), 0),
child: child,
),
child: child,
);
}
}
...@@ -123,7 +123,10 @@ Widget textControllerWidget( ...@@ -123,7 +123,10 @@ Widget textControllerWidget(
inputtype, inputtype,
readonly, readonly,
inputFormatters, inputFormatters,
[maxLength] [focusNode,
focusNode2,
textInputAction,
maxLength]
) { ) {
return Column( return Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
...@@ -148,7 +151,21 @@ Widget textControllerWidget( ...@@ -148,7 +151,21 @@ Widget textControllerWidget(
keyboardType: inputtype, keyboardType: inputtype,
maxLines: hintText == "Enter Description" ? 60 : 1, maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged, onChanged: onChanged,
focusNode: focusNode,
onTapUpOutside: (event) {
if(focusNode.hasFocus){
focusNode.unfocus();
}
},
textInputAction: textInputAction,
onEditingComplete: () {
focusNode.unfocus();
if(focusNode2!=null){
focusNode2.requestFocus();
}
},
inputFormatters: inputFormatters:
inputFormatters != null inputFormatters != null
? [FilteringTextInputFormatter.digitsOnly] ? [FilteringTextInputFormatter.digitsOnly]
......
...@@ -16,6 +16,8 @@ class Accountslist extends StatefulWidget { ...@@ -16,6 +16,8 @@ class Accountslist extends StatefulWidget {
class _AccountslistState extends State<Accountslist> { class _AccountslistState extends State<Accountslist> {
ScrollController scrollController = ScrollController(); ScrollController scrollController = ScrollController();
FocusNode focusNode1 = FocusNode();
FocusNode focusNode2 = FocusNode();
@override @override
void initState() { void initState() {
...@@ -42,197 +44,241 @@ class _AccountslistState extends State<Accountslist> { ...@@ -42,197 +44,241 @@ class _AccountslistState extends State<Accountslist> {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: appbar2(context, "Account List",provider.resetValues,Container( appBar: appbar2(
padding: EdgeInsets.symmetric(horizontal: 5, vertical: 5), context,
"Account List",
provider.resetValues,
Container(
padding: EdgeInsets.symmetric(horizontal: 5, vertical: 5),
child: InkResponse( child: InkResponse(
onTap: () { onTap: () {
_showFilterSheet(context); _showFilterSheet(context);
}, },
child: SvgPicture.asset("assets/svg/filter_ic.svg", height: 18), child: SvgPicture.asset(
"assets/svg/filter_ic.svg",
height: 18,
),
),
), ),
),), ),
backgroundColor: AppColors.scaffold_bg_color, backgroundColor: AppColors.scaffold_bg_color,
body:SafeArea(child: accountList.isNotEmpty? SizedBox( body: SafeArea(
child: SingleChildScrollView( child:
controller: scrollController, accountList.isNotEmpty
child: Column( ? SizedBox(
children: [ child: SingleChildScrollView(
ListView.builder( controller: scrollController,
itemCount: accountList.length + 1,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
if (accountList.isEmpty) {
return SizedBox(
child: Center(child: Text("No Data Available")),
);
}
if (index == accountList.length &&
!provider.isLoading) {
return Padding(
padding: EdgeInsets.all(8.0),
child: Center(child: CircularProgressIndicator.adaptive(
valueColor: AlwaysStoppedAnimation<Color>(
AppColors.app_blue),
)),
);
}
return Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
),
child: Column( child: Column(
children: [ children: [
Row( ListView.builder(
children: [ itemCount: accountList.length + 1,
Expanded( shrinkWrap: true,
flex: 1, physics: NeverScrollableScrollPhysics(),
child: Container( itemBuilder: (context, index) {
height: 50, if (accountList.isEmpty) {
width: 35, return SizedBox(
padding: EdgeInsets.all(8.0), child: Center(
decoration: BoxDecoration( child: Text("No Data Available"),
color: Color(0xFFEAF7FF),
borderRadius: BorderRadius.circular(8),
), ),
child: SvgPicture.asset( );
"assets/svg/common_ac_list_ic.svg", }
if (index == accountList.length &&
!provider.isLoading) {
return Padding(
padding: EdgeInsets.all(8.0),
child: Center(
child:
CircularProgressIndicator.adaptive(
valueColor:
AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
),
),
), ),
);
}
return Container(
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
), ),
), decoration: BoxDecoration(
SizedBox(width: 10), color: Colors.white,
Expanded( borderRadius: BorderRadius.circular(16),
flex: 4, ),
child: SizedBox( child: Column(
child: Column( children: [
crossAxisAlignment: Row(
CrossAxisAlignment.start, children: [
children: [ Expanded(
Text( flex: 1,
accountList[index].name!, child: Container(
style: TextStyle( height: 50,
fontFamily: "JakartaMedium", width: 35,
fontSize: 14, padding: EdgeInsets.all(8.0),
color: AppColors.semi_black, decoration: BoxDecoration(
color: Color(0xFFEAF7FF),
borderRadius:
BorderRadius.circular(8),
),
child: SvgPicture.asset(
"assets/svg/common_ac_list_ic.svg",
),
),
), ),
), SizedBox(width: 10),
Text( Expanded(
accountList[index].contactName ?? flex: 4,
"-", child: SizedBox(
style: TextStyle( child: Column(
fontFamily: "JakartaMedium", crossAxisAlignment:
fontSize: 14, CrossAxisAlignment.start,
color: AppColors.app_blue, children: [
Text(
accountList[index].name!,
style: TextStyle(
fontFamily:
"JakartaMedium",
fontSize: 14,
color:
AppColors
.semi_black,
),
),
Text(
accountList[index]
.contactName ??
"-",
style: TextStyle(
fontFamily:
"JakartaMedium",
fontSize: 14,
color:
AppColors.app_blue,
),
),
],
),
),
), ),
), ],
],
),
),
),
],
),
Divider(thickness: 0.5, color: Color(0xFFD7D7D7)),
...List.generate(4, (j) {
final headings = [
"Mobile Number",
"Email Id",
"Address",
"Date",
];
final subHeadings = [
accountList[index].mob1 ?? "-",
accountList[index].email ?? "-",
accountList[index].address ?? "-",
accountList[index].datetime ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(vertical: 5),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
headings[j],
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.semi_black,
),
), ),
), Divider(
SizedBox(width: 15), thickness: 0.5,
Expanded( color: Color(0xFFD7D7D7),
child: Text( ),
subHeadings[j] ?? "-", ...List.generate(4, (j) {
style: TextStyle( final headings = [
fontFamily: "JakartaMedium", "Mobile Number",
fontSize: 14, "Email Id",
color: AppColors.grey_thick, "Address",
"Date",
];
final subHeadings = [
accountList[index].mob1 ?? "-",
accountList[index].email ?? "-",
accountList[index].address ?? "-",
accountList[index].datetime ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Expanded(
child: Text(
headings[j],
style: TextStyle(
fontFamily:
"JakartaMedium",
fontSize: 14,
color:
AppColors.semi_black,
),
),
),
SizedBox(width: 15),
Expanded(
child: Text(
subHeadings[j] ?? "-",
style: TextStyle(
fontFamily:
"JakartaMedium",
fontSize: 14,
color:
AppColors.grey_thick,
),
),
),
],
),
);
}),
InkResponse(
onTap: () async {
print(
"length, ${accountList.length}",
);
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) =>
Accountslistdetails(
accountID:
accountList[index]
.id,
),
),
);
},
child: Container(
padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
"View Details",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
),
),
SizedBox(width: 5),
SvgPicture.asset(
"assets/svg/next_button.svg",
),
],
),
), ),
), ),
), ],
],
),
);
}),
InkResponse(
onTap: () async {
print("length, ${accountList.length}");
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Accountslistdetails(
accountID: accountList[index].id,
),
), ),
); );
}, },
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
"View Details",
style: TextStyle(
fontFamily: "JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
),
),
SizedBox(width: 5),
SvgPicture.asset(
"assets/svg/next_button.svg",
),
],
),
),
), ),
], ],
), ),
); ),
}, )
), : Emptywidget(context),
], ),
),
),
):Emptywidget(context),)
), ),
onWillPop: () { onWillPop: () {
provider.pageNum = 1; provider.pageNum = 1;
...@@ -243,7 +289,6 @@ class _AccountslistState extends State<Accountslist> { ...@@ -243,7 +289,6 @@ class _AccountslistState extends State<Accountslist> {
); );
} }
Future<void> _showFilterSheet(BuildContext context) { Future<void> _showFilterSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
...@@ -286,12 +331,31 @@ class _AccountslistState extends State<Accountslist> { ...@@ -286,12 +331,31 @@ class _AccountslistState extends State<Accountslist> {
), ),
), ),
), ),
textControllerWidget(context, provider.companyNameController, "Company Name", (p0) { textControllerWidget(
context,
},TextInputType.text,false,null), provider.companyNameController,
textControllerWidget(context, provider.mobileNumberController, "Mobile Number", (p0) { "Company Name",
(p0) {},
},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly), TextInputType.text,
false,
null,
focusNode1,
focusNode2,
TextInputAction.next
),
textControllerWidget(
context,
provider.mobileNumberController,
"Mobile Number",
(p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNode2,
null,
TextInputAction.done,
10
),
InkResponse( InkResponse(
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
...@@ -302,8 +366,14 @@ class _AccountslistState extends State<Accountslist> { ...@@ -302,8 +366,14 @@ class _AccountslistState extends State<Accountslist> {
child: Container( child: Container(
height: 45, height: 45,
alignment: Alignment.center, alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 15), margin: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5), horizontal: 10,
vertical: 15,
),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
...@@ -331,7 +401,6 @@ class _AccountslistState extends State<Accountslist> { ...@@ -331,7 +401,6 @@ class _AccountslistState extends State<Accountslist> {
); );
} }
Future<bool> _onBackPressed(BuildContext context) async { Future<bool> _onBackPressed(BuildContext context) async {
Provider.of<Accountslistprovider>(context, listen: false).pageNum = 1; Provider.of<Accountslistprovider>(context, listen: false).pageNum = 1;
Navigator.pop(context, true); Navigator.pop(context, true);
......
...@@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; ...@@ -3,6 +3,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_svg/svg.dart'; import 'package:flutter_svg/svg.dart';
import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart'; import 'package:generp/Notifiers/commonProvider/accountsListProvider.dart';
import 'package:generp/Utils/ShakeWidget.dart';
import 'package:generp/Utils/app_colors.dart'; import 'package:generp/Utils/app_colors.dart';
import 'package:generp/Utils/commonWidgets.dart'; import 'package:generp/Utils/commonWidgets.dart';
import 'package:generp/Utils/dropdownTheme.dart'; import 'package:generp/Utils/dropdownTheme.dart';
...@@ -19,8 +20,11 @@ class Addcommonpayment extends StatefulWidget { ...@@ -19,8 +20,11 @@ class Addcommonpayment extends StatefulWidget {
State<Addcommonpayment> createState() => _AddcommonpaymentState(); State<Addcommonpayment> createState() => _AddcommonpaymentState();
} }
class _AddcommonpaymentState extends State<Addcommonpayment> { class _AddcommonpaymentState extends State<Addcommonpayment>{
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(20, (index) => FocusNode());
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
...@@ -31,18 +35,30 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -31,18 +35,30 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}); });
} }
@override
void dispose() {
super.dispose();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Accountslistprovider>( return Consumer<Accountslistprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return WillPopScope( return WillPopScope(
onWillPop: () async{ onWillPop: () async {
provider.resetValues(); provider.resetValues();
return onBackPressed(context); return onBackPressed(context);
}, },
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: appbar2(context, "Add Common Account",provider.resetValues,SizedBox(width: 0,)), appBar: appbar2(
context,
"Add Common Account",
provider.resetValues,
SizedBox(width: 0),
),
backgroundColor: AppColors.white, backgroundColor: AppColors.white,
body: SafeArea( body: SafeArea(
child: SizedBox( child: SizedBox(
...@@ -50,591 +66,807 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -50,591 +66,807 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Container( Container(
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10), padding: EdgeInsets.symmetric(
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 10), horizontal: 10,
decoration: BoxDecoration( vertical: 10,
color: Colors.white, ),
borderRadius: BorderRadius.circular(16) margin: EdgeInsets.symmetric(
), horizontal: 10,
child: Column( vertical: 10,
crossAxisAlignment: CrossAxisAlignment.start, ),
children: [ decoration: BoxDecoration(
Text("Account Details",style: TextStyle( color: AppColors.app_blue, color: Colors.white,
fontSize: 16, borderRadius: BorderRadius.circular(16),
fontFamily: "JakartaMedium"),), ),
SizedBox(height: 10,), child: Column(
Text("Account"), crossAxisAlignment: CrossAxisAlignment.start,
DropdownButtonHideUnderline( children: [
child: Row( Text(
children: [ "Account Details",
Expanded( style: TextStyle(
child: DropdownButton2<String>( color: AppColors.app_blue,
isExpanded: true, fontSize: 16,
hint: const Row( fontFamily: "JakartaMedium",
children: [ ),
Expanded( ),
child: Text( SizedBox(height: 10),
'Select Account', Text("Account"),
style: TextStyle(fontSize: 14), DropdownButtonHideUnderline(
overflow: TextOverflow.ellipsis, child: Row(
), children: [
), Expanded(
], child: DropdownButton2<String>(
), isExpanded: true,
items: hint: const Row(
provider.accountTypes children: [
.map( Expanded(
(act) => DropdownMenuItem<String>( child: Text(
value: act, 'Select Account',
child: Text( style: TextStyle(fontSize: 14),
act, overflow: TextOverflow.ellipsis,
style: const TextStyle( ),
fontSize: 14, ),
), ],
overflow: TextOverflow.ellipsis, ),
), items:
), provider.accountTypes
) .map(
.toList(), (act) =>
// value: provider.selectedAccountType, DropdownMenuItem<String>(
value:provider.accountTypes.contains(provider.selectedAccountType) value: act,
? provider.selectedAccountType child: Text(
: null, act,
onChanged: (value) { style: const TextStyle(
if (value != null) { fontSize: 14,
provider.selectedAccountType = value; ),
print( overflow:
"statusId:${provider.selectedAccountType}", TextOverflow
); .ellipsis,
} ),
}, ),
buttonStyleData: ddtheme.buttonStyleData, )
iconStyleData: ddtheme.iconStyleData, .toList(),
menuItemStyleData: ddtheme.menuItemStyleData, // value: provider.selectedAccountType,
dropdownStyleData: ddtheme.dropdownStyleData, value:
), provider.accountTypes.contains(
), provider.selectedAccountType,
], )
), ? provider.selectedAccountType
), : null,
errorWidget(context,provider.accountError), onChanged: (value) {
textControllerWidget( if (value != null) {
context, provider.selectedAccountType = value;
provider.nameController, print(
"Enter Name", "statusId:${provider.selectedAccountType}",
(p0) { );
provider.updateName(p0); }
provider.checkInputsAPI( },
context, buttonStyleData: ddtheme.buttonStyleData,
"name", iconStyleData: ddtheme.iconStyleData,
provider.nameController.text, menuItemStyleData:
); ddtheme.menuItemStyleData,
}, dropdownStyleData:
TextInputType.text,false, ddtheme.dropdownStyleData,
null ),
),errorWidget(context,provider.nameError), ),
textControllerWidget( ],
context, ),
provider.mobileController, ),
"Enter Mobile", errorWidget(context, provider.accountError),
(p0) { textControllerWidget(
provider.updateMobile(p0); context,
provider.checkInputsAPI( provider.nameController,
context, "Enter Name",
"mob1", (p0) {
provider.mobileController.text, provider.updateName(p0);
); provider.checkInputsAPI(
}, context,
TextInputType.phone,false,FilteringTextInputFormatter.digitsOnly,10 "name",
), provider.nameController.text,
errorWidget(context,provider.mobileError), );
Text("State"), },
DropdownButtonHideUnderline( TextInputType.text,
child: Row( false,
children: [ null,
Expanded( focusNodes[0],
child: DropdownButton2<States>( focusNodes[1],
isExpanded: true, TextInputAction.next
hint: Text( ),
'Select State', errorWidget(context, provider.nameError),
style: TextStyle(fontSize: 14), textControllerWidget(
overflow: TextOverflow.ellipsis, context,
), provider.mobileController,
items: "Enter Mobile",
provider.states (p0) {
.map( provider.updateMobile(p0);
(states) => DropdownMenuItem<States>( provider.checkInputsAPI(
value: states, context,
child: Text( "mob1",
states.name ?? '', provider.mobileController.text,
style: const TextStyle( );
fontSize: 14, },
), TextInputType.phone,
overflow: TextOverflow.ellipsis, false,
), FilteringTextInputFormatter.digitsOnly,
), focusNodes[1],
) focusNodes[2],
.toList(), TextInputAction.next,
value:provider.states.contains(provider.selectedState) 10,
? provider.selectedState ),
: null, errorWidget(context, provider.mobileError),
// value: provider.selectedState, Text("State"),
onChanged: (States? value) { DropdownButtonHideUnderline(
if (value != null) { child: Row(
if (provider.states.isNotEmpty) { children: [
provider.selectedState = value; Expanded(
print( child: DropdownButton2<States>(
"Selected Complaint Type: ${value.name}, ID: ${value.id}", focusNode: focusNodes[2],
); autofocus: focusNodes[2].hasFocus?true:false,
provider.selectedStateID = value.id!; isExpanded: true,
print( hint: Text(
"hfjkshfg" + 'Select State',
provider.selectedStateID.toString(), style: TextStyle(fontSize: 14),
); overflow: TextOverflow.ellipsis,
if(provider.selectedDistricts!=null){ ),
provider.selectedDistricts = null; items:
provider.selectedDistrictId = null; provider.states
provider.selectedDistrictValue = null; .map(
} (states) =>
DropdownMenuItem<States>(
value: states,
child: Text(
states.name ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
),
),
)
.toList(),
value:
provider.states.contains(
provider.selectedState,
)
? provider.selectedState
: null,
// value: provider.selectedState,
onChanged: (States? value) {
if (value != null) {
if (provider.states.isNotEmpty) {
provider.selectedState = value;
print(
"Selected Complaint Type: ${value.name}, ID: ${value.id}",
);
provider.selectedStateID =
value.id!;
print(
"hfjkshfg" +
provider.selectedStateID
.toString(),
);
if (provider.selectedDistricts !=
null) {
provider.selectedDistricts = null;
provider.selectedDistrictId =
null;
provider.selectedDistrictValue =
null;
}
provider.getDistrictAPI( provider.getDistrictAPI(
context, context,
provider.selectedStateID, provider.selectedStateID,
); );
} }
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController: provider.stateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.stateSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search States...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.stateSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
errorWidget(context,provider.stateError),
Text("District"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<Districts>(
isExpanded: true,
hint: Text(
'Select District',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items:
provider.districts
.map(
(dist) => DropdownMenuItem<Districts>(
value: dist,
child: Text(
dist.district ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
value:provider.districts.contains(provider.selectedDistricts)
? provider.selectedDistricts
: null,
// value: provider.selectedDistricts,
onChanged: (Districts? value) {
if (value != null) {
if (provider.districts.isNotEmpty) {
provider.selectedDistricts = value;
print("Selected ID: ${value.id}");
provider.selectedDistrictId = value.id!;
provider.selectedDistrictValue =
value.district!;
print(
"hfjkshfg" +
provider.selectedDistrictId
.toString(),
);
if(provider.selectedSubLocations!=null){
provider.selectedSubLocations = null;
provider.selectedSubLocID = null;
provider.selectedSubLocValue = null;
} dropdownSearchData: DropdownSearchData(
provider.getSubLocationAPI( searchInnerWidgetHeight: 50,
context, searchController:
provider.selectedDistrictId, provider.stateSearchController,
); searchInnerWidget: Padding(
} padding: const EdgeInsets.all(8),
} child: TextFormField(
}, controller:
dropdownSearchData: DropdownSearchData( provider.stateSearchController,
searchInnerWidgetHeight: 50, decoration: InputDecoration(
searchController: provider.districtSearchController, isDense: true,
searchInnerWidget: Padding( contentPadding:
padding: const EdgeInsets.all(8), const EdgeInsets.symmetric(
child: TextFormField( horizontal: 10,
controller: vertical: 8,
provider ),
.districtSearchController, hintText: 'Search States...',
decoration: InputDecoration( border: OutlineInputBorder(
isDense: true, borderRadius:
contentPadding: BorderRadius.circular(8),
const EdgeInsets.symmetric( ),
horizontal: 10, ),
vertical: 8, ),
), ),
hintText: 'Search Districts...', searchMatchFn: (item, searchValue) {
border: OutlineInputBorder( return item.value?.name
borderRadius: ?.toLowerCase()
BorderRadius.circular(8), .contains(
), searchValue.toLowerCase(),
), ) ??
), false;
), },
searchMatchFn: (item, searchValue) { ),
return item.value?.district onMenuStateChange: (isOpen) {
?.toLowerCase() if (!isOpen) {
.contains( provider.stateSearchController
searchValue.toLowerCase(), .clear();
) ?? }
false; },
}, buttonStyleData: ddtheme.buttonStyleData,
), iconStyleData: ddtheme.iconStyleData,
onMenuStateChange: (isOpen) { menuItemStyleData:
if (!isOpen) { ddtheme.menuItemStyleData,
provider.districtSearchController.clear(); dropdownStyleData:
} ddtheme.dropdownStyleData,
}, ),
buttonStyleData: ddtheme.buttonStyleData, ),
iconStyleData: ddtheme.iconStyleData, ],
menuItemStyleData: ddtheme.menuItemStyleData, ),
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
errorWidget(context,provider.districtError),
Text("Sub Locality"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<SubLocations>(
isExpanded: true,
hint: Text(
'Select Sub Locality',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items:
provider.subLocations
.map(
(subloc) =>
DropdownMenuItem<SubLocations>(
value: subloc,
child: Text(
subloc.subLocality ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
),
)
.toList(),
// value: provider.selectedSubLocations,
value:provider.subLocations.contains(provider.selectedSubLocations)
? provider.selectedSubLocations
: null,
onChanged: (SubLocations? value) {
if (value != null) {
if (provider.subLocations.isNotEmpty) {
provider.selectedSubLocations = value;
print("Selected ID: ${value.id}");
provider.selectedSubLocID = value.id!;
provider.selectedSubLocValue =
value.subLocality!;
print(
"hfjkshfg" +
provider.selectedSubLocID.toString(),
);
}
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController: provider.subLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.subLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sub Locality...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.subLocSearchController.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData,
dropdownStyleData: ddtheme.dropdownStyleData,
),
),
],
),
),
errorWidget(context,provider.localityError),
textControllerWidget(
context,
provider.addressController,
"Enter Address",
provider.updateAddress,TextInputType.text,false,null
),
errorWidget(context,provider.addressError),
],
),
),
SizedBox(height: 15,),
Column(
children: [
InkResponse(
onTap: () => provider.isVisible = !provider.isVisible,
child: Center(
child: Text(
provider.isVisible?"- Hide More Details":"+ Add More Details",style: TextStyle(
color: AppColors.app_blue,
fontSize: 16,
fontFamily: "JakartaMedium"
), ),
errorWidget(context, provider.stateError),
Text("District"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<Districts>(
focusNode: focusNodes[3],
isExpanded: true,
hint: Text(
'Select District',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items:
provider.districts
.map(
(dist) =>
DropdownMenuItem<Districts>(
value: dist,
child: Text(
dist.district ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow
.ellipsis,
),
),
)
.toList(),
value:
provider.districts.contains(
provider.selectedDistricts,
)
? provider.selectedDistricts
: null,
// value: provider.selectedDistricts,
onChanged: (Districts? value) {
if (value != null) {
if (provider.districts.isNotEmpty) {
provider.selectedDistricts = value;
print("Selected ID: ${value.id}");
provider.selectedDistrictId =
value.id!;
provider.selectedDistrictValue =
value.district!;
print(
"hfjkshfg" +
provider.selectedDistrictId
.toString(),
);
if (provider.selectedSubLocations !=
null) {
provider.selectedSubLocations =
null;
provider.selectedSubLocID = null;
provider.selectedSubLocValue =
null;
}
provider.getSubLocationAPI(
context,
provider.selectedDistrictId,
);
}
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider.districtSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider
.districtSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Districts...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.district
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.districtSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
),
),
],
),
), ),
), errorWidget(context, provider.districtError),
Text("Sub Locality"),
DropdownButtonHideUnderline(
child: Row(
children: [
Expanded(
child: DropdownButton2<SubLocations>(
focusNode: focusNodes[4],
isExpanded: true,
hint: Text(
'Select Sub Locality',
style: TextStyle(fontSize: 14),
overflow: TextOverflow.ellipsis,
),
items:
provider.subLocations
.map(
(subloc) => DropdownMenuItem<
SubLocations
>(
value: subloc,
child: Text(
subloc.subLocality ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow:
TextOverflow.ellipsis,
),
),
)
.toList(),
// value: provider.selectedSubLocations,
value:
provider.subLocations.contains(
provider.selectedSubLocations,
)
? provider.selectedSubLocations
: null,
onChanged: (SubLocations? value) {
if (value != null) {
if (provider
.subLocations
.isNotEmpty) {
provider.selectedSubLocations =
value;
print("Selected ID: ${value.id}");
provider.selectedSubLocID =
value.id!;
provider.selectedSubLocValue =
value.subLocality!;
print(
"hfjkshfg" +
provider.selectedSubLocID
.toString(),
);
}
}
},
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:
provider.subLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.subLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText:
'Search Sub Locality...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.subLocSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData,
menuItemStyleData:
ddtheme.menuItemStyleData,
dropdownStyleData:
ddtheme.dropdownStyleData,
),
),
],
),
),
errorWidget(context, provider.localityError),
textControllerWidget(
context,
provider.addressController,
"Enter Address",
provider.updateAddress,
TextInputType.text,
false,
null,
focusNodes[5],
null,
TextInputAction.done,
),
errorWidget(context, provider.addressError),
],
), ),
Visibility( ),
visible: provider.isVisible, SizedBox(height: 12),
child: Column( Column(
crossAxisAlignment: CrossAxisAlignment.start, children: [
children: [ InkResponse(
Container( onTap:
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 10), () => provider.isVisible = !provider.isVisible,
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10), child: Center(
decoration: BoxDecoration( child: Text(
color: Colors.white, provider.isVisible
borderRadius: BorderRadius.circular(16) ? "- Hide More Details"
: "+ Add More Details",
style: TextStyle(
color: AppColors.app_blue,
fontSize: 16,
fontFamily: "JakartaMedium",
), ),
child: Column( ),
crossAxisAlignment: CrossAxisAlignment.start, ),
children: [ ),
Text("Bank Details",style: TextStyle( if(provider.addMoreDetailsError!=null)...[
color: AppColors.app_blue, Center(
fontSize: 16, child: ShakeWidget(
fontFamily: "JakartaMedium" key: Key("value"),
),), duration: Duration(milliseconds: 700),
textControllerWidget( child: Text(
context, provider.addMoreDetailsError??"",
provider.bankNameController, style: TextStyle(
"Bank Name", color: Colors.red,
provider.updateBankName,TextInputType.text,false,null fontSize: 13,
), fontFamily: "JakartaMedium",
errorWidget(context,provider.banknameError),
textControllerWidget(
context,
provider.branchNameController,
"Bank Branch",
provider.updateBankBranch,TextInputType.text,false,null
),
errorWidget(context,provider.bankBranchError),
textControllerWidget(
context,
provider.bankIfscCotroller,
"Bank IFSC",
provider.updateIFSC,TextInputType.text,false,null
),
errorWidget(context,provider.bankIFSCError),
textControllerWidget(
context,
provider.bankHolderNameController,
"Bank Holder Name",
provider.updateHolder,TextInputType.text,false,null
),
errorWidget(context,provider.bankHolderNameError),
textControllerWidget(
context,
provider.bankAcNumberController,
"Bank Account Number",
provider.updateNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly
),
errorWidget(context,provider.bankAcNumberError),
textControllerWidget(
context,
provider.bankUpiController,
"Bank UPI ID",
provider.updateUPI,TextInputType.text,false,null
),
errorWidget(context,provider.upiError),
],
), ),
), ),
Container( ),
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 10), ),
padding: EdgeInsets.symmetric(horizontal: 10,vertical: 10), ],
decoration: BoxDecoration( Visibility(
visible: provider.isVisible,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 10,
),
decoration: BoxDecoration(
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(16) borderRadius: BorderRadius.circular(16),
),
child: Column(
crossAxisAlignment:
CrossAxisAlignment.start,
children: [
Text(
"Bank Details",
style: TextStyle(
color: AppColors.app_blue,
fontSize: 16,
fontFamily: "JakartaMedium",
),
),
textControllerWidget(
context,
provider.bankNameController,
"Bank Name",
provider.updateBankName,
TextInputType.text,
false,
null,
focusNodes[6],
focusNodes[7],
TextInputAction.next,
),
errorWidget(
context,
provider.banknameError,
),
textControllerWidget(
context,
provider.branchNameController,
"Bank Branch",
provider.updateBankBranch,
TextInputType.text,
false,
null,
focusNodes[7],focusNodes[8],TextInputAction.next
),
errorWidget(
context,
provider.bankBranchError,
),
textControllerWidget(
context,
provider.bankIfscCotroller,
"Bank IFSC",
provider.updateIFSC,
TextInputType.text,
false,
null,
focusNodes[8],
focusNodes[9],TextInputAction.next
),
errorWidget(
context,
provider.bankIFSCError,
),
textControllerWidget(
context,
provider.bankHolderNameController,
"Bank Holder Name",
provider.updateHolder,
TextInputType.text,
false,
null,
focusNodes[9],
focusNodes[10],TextInputAction.next
),
errorWidget(
context,
provider.bankHolderNameError,
),
textControllerWidget(
context,
provider.bankAcNumberController,
"Bank Account Number",
provider.updateNumber,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[10],
focusNodes[11],TextInputAction.next
),
errorWidget(
context,
provider.bankAcNumberError,
),
textControllerWidget(
context,
provider.bankUpiController,
"Bank UPI ID",
provider.updateUPI,
TextInputType.text,
false,
null,
focusNodes[11],
focusNodes[12],
TextInputAction.next
),
errorWidget(context, provider.upiError),
],
),
), ),
child: Column( Container(
crossAxisAlignment: CrossAxisAlignment.start, margin: EdgeInsets.symmetric(
children: [ horizontal: 10,
Text("Contact Details",style: TextStyle( vertical: 10,
color: AppColors.app_blue, ),
fontSize: 16, padding: EdgeInsets.symmetric(
fontFamily: "JakartaMedium" horizontal: 10,
),), vertical: 10,
textControllerWidget( ),
context, decoration: BoxDecoration(
provider.contactPersonController, color: Colors.white,
"Contact Person Name", borderRadius: BorderRadius.circular(16),
provider.updateContactPerson,TextInputType.text,false,null ),
), child: Column(
errorWidget(context,provider.contactPersonError), crossAxisAlignment:
textControllerWidget( CrossAxisAlignment.start,
context, children: [
provider.contectPersonDesignationController, Text(
"Contact Person Designation", "Contact Details",
provider.updateDesignation,TextInputType.text,false,null style: TextStyle(
), color: AppColors.app_blue,
errorWidget(context,provider.desigantionError), fontSize: 16,
textControllerWidget( fontFamily: "JakartaMedium",
context, ),
provider.contectPersonAltMobController, ),
"Alternative Mobile Number", textControllerWidget(
(p0) { context,
provider.updateAltMobile(p0); provider.contactPersonController,
provider.checkInputsAPI(context, "mob2", provider.contectPersonAltMobController.text); "Contact Person Name",
},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly provider.updateContactPerson,
), TextInputType.text,
errorWidget(context,provider.altMobError), false,
textControllerWidget( null,
context, focusNodes[12],
provider.contectPersonTeleController, focusNodes[13],TextInputAction.next
"Telephone Number", ),
provider.updateTeleMobile,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly errorWidget(
), context,
errorWidget(context,provider.teleError), provider.contactPersonError,
textControllerWidget( ),
context, textControllerWidget(
provider.contectPersonMailController, context,
"Customer Mail ID", provider
provider.updateMail,TextInputType.text,false,null .contectPersonDesignationController,
), "Contact Person Designation",
errorWidget(context,provider.mailError), provider.updateDesignation,
], TextInputType.text,
false,
null,
focusNodes[13],
focusNodes[14],TextInputAction.next
),
errorWidget(
context,
provider.desigantionError,
),
textControllerWidget(
context,
provider.contectPersonAltMobController,
"Alternative Mobile Number",
(p0) {
provider.updateAltMobile(p0);
provider.checkInputsAPI(
context,
"mob2",
provider
.contectPersonAltMobController
.text,
);
},
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[14],
focusNodes[15],TextInputAction.next,
10,
),
errorWidget(
context,
provider.altMobError,
),
textControllerWidget(
context,
provider.contectPersonTeleController,
"Telephone Number",
provider.updateTeleMobile,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[15],
focusNodes[16],TextInputAction.next
),
errorWidget(context, provider.teleError),
textControllerWidget(
context,
provider.contectPersonMailController,
"Customer Mail ID",
provider.updateMail,
TextInputType.text,
false,
null,
focusNodes[16],
focusNodes[17],TextInputAction.next
),
errorWidget(context, provider.mailError),
],
),
), ),
) ],
], ),
), ),
), ],
], ),
)
], ],
), ),
), ),
), ),
), ),
floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap:provider.submitClickced?null: () { onTap:
provider.submitClickced = true; provider.submitClickced
provider.submitCommonAccountsAPI(context); ? null
}, : () {
provider.submitClickced = true;
provider.submitCommonAccountsAPI(context);
},
child: Container( child: Container(
height: 45, height: 45,
alignment: Alignment.center, alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 15), margin: EdgeInsets.symmetric(horizontal: 10, vertical: 15),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5), padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child:provider.submitClickced?CircularProgressIndicator.adaptive( child:
valueColor: AlwaysStoppedAnimation(AppColors.white), provider.submitClickced
) :Text( ? CircularProgressIndicator.adaptive(
"Submit", valueColor: AlwaysStoppedAnimation(AppColors.white),
style: TextStyle( )
fontSize: 15, : Text(
fontFamily: "JakartaMedium", "Submit",
color: Colors.white, style: TextStyle(
), fontSize: 15,
), fontFamily: "JakartaMedium",
color: Colors.white,
),
),
), ),
), ),
), ),
...@@ -642,5 +874,4 @@ class _AddcommonpaymentState extends State<Addcommonpayment> { ...@@ -642,5 +874,4 @@ class _AddcommonpaymentState extends State<Addcommonpayment> {
}, },
); );
} }
} }
...@@ -8,6 +8,7 @@ import 'package:provider/provider.dart'; ...@@ -8,6 +8,7 @@ import 'package:provider/provider.dart';
import '../../Utils/app_colors.dart'; import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart'; import '../../Utils/commonWidgets.dart';
import '../finance/FileViewer.dart'; import '../finance/FileViewer.dart';
import 'editOrderAccountDetails.dart';
class Ordersdetailsbymodes extends StatefulWidget { class Ordersdetailsbymodes extends StatefulWidget {
final pageTitleName; final pageTitleName;
...@@ -380,7 +381,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -380,7 +381,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
...List.generate(3, (index) { ...List.generate(3, (index) {
final assetnames = [ final assetnames = [
"order_list_svg_1", "crm_contact_edit",
"order_list_svg_2", "order_list_svg_2",
"order_list_svg_3", "order_list_svg_3",
"order_list_svg_3", "order_list_svg_3",
...@@ -396,14 +397,18 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> { ...@@ -396,14 +397,18 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
switch (index) { switch (index) {
case 0: case 0:
Navigator.pop(context); Navigator.pop(context);
// Navigator.push( Navigator.push(
// context, context,
// MaterialPageRoute( MaterialPageRoute(
// builder: builder:
// (context) => (context) =>
// Orderdetailspaymenthistory(), Editorderaccountdetails(
// ), mode: widget.mode,
// ); pageTitleName: "Edit Order (${widget.mode})",
orderID: provider.orderDetails.id,
),
),
);
break; break;
case 1: case 1:
Navigator.pop(context); Navigator.pop(context);
......
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