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) {
addMoreDetailsError = "Please Add More Details to Continue";
isValid = false;
}
if(_isVisible) {
if (bankNameController.text
.trim()
.isEmpty) {
banknameError = "Please Enter a Bank Name"; banknameError = "Please Enter a Bank Name";
isValid = false; isValid = false;
} }
if (branchNameController.text.trim().isEmpty) { if (branchNameController.text
.trim()
.isEmpty) {
bankBranchError = "Please Enter Branch Name"; bankBranchError = "Please Enter Branch Name";
isValid = false; isValid = false;
} }
if (bankIfscCotroller.text.trim().isEmpty) { if (bankIfscCotroller.text
bankIFSCError = "Please Enter Bank IFSC";isValid = false; .trim()
.isEmpty) {
bankIFSCError = "Please Enter Bank IFSC";
isValid = false;
}
if (bankHolderNameController.text
.trim()
.isEmpty) {
bankHolderNameError = "Please Enter Account Holder Name";
isValid = false;
} }
if (bankHolderNameController.text.trim().isEmpty) { if (bankAcNumberController.text
bankHolderNameError = "Please Enter Account Holder Name";isValid = false; .trim()
.isEmpty) {
bankAcNumberError = "Please Enter Bank Account Number";
isValid = false;
} }
if (bankAcNumberController.text.trim().isEmpty) { if (bankUpiController.text
bankAcNumberError= "Please Enter Bank Account Number"; isValid = false; .trim()
.isEmpty) {
upiError = "Please Enter UPI ID";
isValid = false;
} }
if (bankUpiController.text.trim().isEmpty) { if (contactPersonController.text
upiError= "Please Enter UPI ID"; isValid = false; .trim()
.isEmpty) {
contactPersonError = "Please Enter Contact Person Name";
isValid = false;
} }
if (contactPersonController.text.trim().isEmpty) { if (contectPersonDesignationController.text
contactPersonError= "Please Enter Contact Person Name"; isValid = false; .trim()
.isEmpty) {
desigantionError = "Please Enter Designation";
isValid = false;
} }
if (contectPersonDesignationController.text.trim().isEmpty) { if (contectPersonAltMobController.text
desigantionError= "Please Enter Designation"; isValid = false; .trim()
.isEmpty) {
altMobError = "Please Enter Mobile Number";
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,18 +44,29 @@ class _AccountslistState extends State<Accountslist> { ...@@ -42,18 +44,29 @@ 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(
context,
"Account List",
provider.resetValues,
Container(
padding: EdgeInsets.symmetric(horizontal: 5, vertical: 5), 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:
accountList.isNotEmpty
? SizedBox(
child: SingleChildScrollView( child: SingleChildScrollView(
controller: scrollController, controller: scrollController,
child: Column( child: Column(
...@@ -65,17 +78,24 @@ class _AccountslistState extends State<Accountslist> { ...@@ -65,17 +78,24 @@ class _AccountslistState extends State<Accountslist> {
itemBuilder: (context, index) { itemBuilder: (context, index) {
if (accountList.isEmpty) { if (accountList.isEmpty) {
return SizedBox( return SizedBox(
child: Center(child: Text("No Data Available")), child: Center(
child: Text("No Data Available"),
),
); );
} }
if (index == accountList.length && if (index == accountList.length &&
!provider.isLoading) { !provider.isLoading) {
return Padding( return Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Center(child: CircularProgressIndicator.adaptive( child: Center(
valueColor: AlwaysStoppedAnimation<Color>( child:
AppColors.app_blue), CircularProgressIndicator.adaptive(
)), valueColor:
AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
),
),
),
); );
} }
...@@ -104,7 +124,8 @@ class _AccountslistState extends State<Accountslist> { ...@@ -104,7 +124,8 @@ class _AccountslistState extends State<Accountslist> {
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xFFEAF7FF), color: Color(0xFFEAF7FF),
borderRadius: BorderRadius.circular(8), borderRadius:
BorderRadius.circular(8),
), ),
child: SvgPicture.asset( child: SvgPicture.asset(
"assets/svg/common_ac_list_ic.svg", "assets/svg/common_ac_list_ic.svg",
...@@ -122,18 +143,24 @@ class _AccountslistState extends State<Accountslist> { ...@@ -122,18 +143,24 @@ class _AccountslistState extends State<Accountslist> {
Text( Text(
accountList[index].name!, accountList[index].name!,
style: TextStyle( style: TextStyle(
fontFamily: "JakartaMedium", fontFamily:
"JakartaMedium",
fontSize: 14, fontSize: 14,
color: AppColors.semi_black, color:
AppColors
.semi_black,
), ),
), ),
Text( Text(
accountList[index].contactName ?? accountList[index]
.contactName ??
"-", "-",
style: TextStyle( style: TextStyle(
fontFamily: "JakartaMedium", fontFamily:
"JakartaMedium",
fontSize: 14, fontSize: 14,
color: AppColors.app_blue, color:
AppColors.app_blue,
), ),
), ),
], ],
...@@ -142,7 +169,10 @@ class _AccountslistState extends State<Accountslist> { ...@@ -142,7 +169,10 @@ class _AccountslistState extends State<Accountslist> {
), ),
], ],
), ),
Divider(thickness: 0.5, color: Color(0xFFD7D7D7)), Divider(
thickness: 0.5,
color: Color(0xFFD7D7D7),
),
...List.generate(4, (j) { ...List.generate(4, (j) {
final headings = [ final headings = [
"Mobile Number", "Mobile Number",
...@@ -158,7 +188,9 @@ class _AccountslistState extends State<Accountslist> { ...@@ -158,7 +188,9 @@ class _AccountslistState extends State<Accountslist> {
accountList[index].datetime ?? "-", accountList[index].datetime ?? "-",
]; ];
return Container( return Container(
padding: EdgeInsets.symmetric(vertical: 5), padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.start, CrossAxisAlignment.start,
...@@ -167,9 +199,11 @@ class _AccountslistState extends State<Accountslist> { ...@@ -167,9 +199,11 @@ class _AccountslistState extends State<Accountslist> {
child: Text( child: Text(
headings[j], headings[j],
style: TextStyle( style: TextStyle(
fontFamily: "JakartaMedium", fontFamily:
"JakartaMedium",
fontSize: 14, fontSize: 14,
color: AppColors.semi_black, color:
AppColors.semi_black,
), ),
), ),
), ),
...@@ -178,9 +212,11 @@ class _AccountslistState extends State<Accountslist> { ...@@ -178,9 +212,11 @@ class _AccountslistState extends State<Accountslist> {
child: Text( child: Text(
subHeadings[j] ?? "-", subHeadings[j] ?? "-",
style: TextStyle( style: TextStyle(
fontFamily: "JakartaMedium", fontFamily:
"JakartaMedium",
fontSize: 14, fontSize: 14,
color: AppColors.grey_thick, color:
AppColors.grey_thick,
), ),
), ),
), ),
...@@ -190,23 +226,31 @@ class _AccountslistState extends State<Accountslist> { ...@@ -190,23 +226,31 @@ class _AccountslistState extends State<Accountslist> {
}), }),
InkResponse( InkResponse(
onTap: () async { onTap: () async {
print("length, ${accountList.length}"); print(
"length, ${accountList.length}",
);
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: builder:
(context) => Accountslistdetails( (context) =>
accountID: accountList[index].id, Accountslistdetails(
accountID:
accountList[index]
.id,
), ),
), ),
); );
}, },
child: Container( child: Container(
padding: EdgeInsets.symmetric(vertical: 5), padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row( child: Row(
crossAxisAlignment: crossAxisAlignment:
CrossAxisAlignment.center, CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment:
MainAxisAlignment.start,
children: [ children: [
Text( Text(
"View Details", "View Details",
...@@ -232,7 +276,9 @@ class _AccountslistState extends State<Accountslist> { ...@@ -232,7 +276,9 @@ class _AccountslistState extends State<Accountslist> {
], ],
), ),
), ),
):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);
......
This diff is collapsed.
...@@ -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