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 {
String? altMobError;
String? teleError;
String? mailError;
String? addMoreDetailsError;
List<States> _states = [];
List<Districts> _districts = [];
......@@ -86,6 +87,9 @@ class Accountslistprovider extends ChangeNotifier {
set isVisible(bool value) {
_isVisible = value;
if(value==true){
addMoreDetailsError = null;
}
notifyListeners();
}
......@@ -270,6 +274,7 @@ class Accountslistprovider extends ChangeNotifier {
}
} catch (e, s) {}
}
bool hasFilledAdditionalDetails = false;
bool _submitClicked = false;
bool get submitClickced => _submitClicked;
......@@ -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) {
accountError = null;
nameError = null;
......@@ -352,6 +372,7 @@ class Accountslistprovider extends ChangeNotifier {
altMobError = null;
teleError = null;
mailError = null;
addMoreDetailsError = null;
bool isValid = true;
if (_selectedAccountType == null || _selectedAccountType!.isEmpty) {
accountError = "Please select an Account";
......@@ -382,37 +403,71 @@ class Accountslistprovider extends ChangeNotifier {
addressError = "Please Enter an Address";
isValid = false;
}
if (bankNameController.text.trim().isEmpty) {
checkAdditionalDetailsFilled();
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";
isValid = false;
}
if (branchNameController.text.trim().isEmpty) {
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 (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 (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 (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 (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 (contactPersonController.text.trim().isEmpty) {
contactPersonError= "Please Enter Contact Person Name"; isValid = false;
if (contectPersonDesignationController.text
.trim()
.isEmpty) {
desigantionError = "Please Enter Designation";
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 (contectPersonAltMobController.text.trim().isEmpty) {
altMobError= "Please Enter Mobile Number"; isValid = false;
}
// if (contectPersonTeleController.text.trim().isEmpty) {
// teleError= "Please Enter Telephone"; isValid = false;
// }
......@@ -440,54 +495,65 @@ class Accountslistprovider extends ChangeNotifier {
void updateBankName(String value) {
banknameError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateBankBranch(String value) {
bankBranchError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateIFSC(String value) {
bankIFSCError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateHolder(String value) {
bankHolderNameError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateNumber(String value) {
bankAcNumberError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateUPI(String value) {
upiError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateContactPerson(String value){
contactPersonError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateDesignation(String value){
desigantionError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateAltMobile(String value){
altMobError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateTeleMobile(String value){
teleError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
void updateMail(String value){
mailError = null;
checkAdditionalDetailsFilled();
notifyListeners();
}
......@@ -575,6 +641,7 @@ class Accountslistprovider extends ChangeNotifier {
altMobError = null;
teleError = null;
mailError = null;
addMoreDetailsError = null;
ChechkDropdownValues();
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(
inputtype,
readonly,
inputFormatters,
[maxLength]
[focusNode,
focusNode2,
textInputAction,
maxLength]
) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
......@@ -148,7 +151,21 @@ Widget textControllerWidget(
keyboardType: inputtype,
maxLines: hintText == "Enter Description" ? 60 : 1,
onChanged: onChanged,
focusNode: focusNode,
onTapUpOutside: (event) {
if(focusNode.hasFocus){
focusNode.unfocus();
}
},
textInputAction: textInputAction,
onEditingComplete: () {
focusNode.unfocus();
if(focusNode2!=null){
focusNode2.requestFocus();
}
},
inputFormatters:
inputFormatters != null
? [FilteringTextInputFormatter.digitsOnly]
......
......@@ -16,6 +16,8 @@ class Accountslist extends StatefulWidget {
class _AccountslistState extends State<Accountslist> {
ScrollController scrollController = ScrollController();
FocusNode focusNode1 = FocusNode();
FocusNode focusNode2 = FocusNode();
@override
void initState() {
......@@ -42,18 +44,29 @@ class _AccountslistState extends State<Accountslist> {
return WillPopScope(
child: Scaffold(
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),
child: InkResponse(
onTap: () {
_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,
body:SafeArea(child: accountList.isNotEmpty? SizedBox(
body: SafeArea(
child:
accountList.isNotEmpty
? SizedBox(
child: SingleChildScrollView(
controller: scrollController,
child: Column(
......@@ -65,17 +78,24 @@ class _AccountslistState extends State<Accountslist> {
itemBuilder: (context, index) {
if (accountList.isEmpty) {
return SizedBox(
child: Center(child: Text("No Data Available")),
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),
)),
child: Center(
child:
CircularProgressIndicator.adaptive(
valueColor:
AlwaysStoppedAnimation<Color>(
AppColors.app_blue,
),
),
),
);
}
......@@ -104,7 +124,8 @@ class _AccountslistState extends State<Accountslist> {
padding: EdgeInsets.all(8.0),
decoration: BoxDecoration(
color: Color(0xFFEAF7FF),
borderRadius: BorderRadius.circular(8),
borderRadius:
BorderRadius.circular(8),
),
child: SvgPicture.asset(
"assets/svg/common_ac_list_ic.svg",
......@@ -122,18 +143,24 @@ class _AccountslistState extends State<Accountslist> {
Text(
accountList[index].name!,
style: TextStyle(
fontFamily: "JakartaMedium",
fontFamily:
"JakartaMedium",
fontSize: 14,
color: AppColors.semi_black,
color:
AppColors
.semi_black,
),
),
Text(
accountList[index].contactName ??
accountList[index]
.contactName ??
"-",
style: TextStyle(
fontFamily: "JakartaMedium",
fontFamily:
"JakartaMedium",
fontSize: 14,
color: AppColors.app_blue,
color:
AppColors.app_blue,
),
),
],
......@@ -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) {
final headings = [
"Mobile Number",
......@@ -158,7 +188,9 @@ class _AccountslistState extends State<Accountslist> {
accountList[index].datetime ?? "-",
];
return Container(
padding: EdgeInsets.symmetric(vertical: 5),
padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.start,
......@@ -167,9 +199,11 @@ class _AccountslistState extends State<Accountslist> {
child: Text(
headings[j],
style: TextStyle(
fontFamily: "JakartaMedium",
fontFamily:
"JakartaMedium",
fontSize: 14,
color: AppColors.semi_black,
color:
AppColors.semi_black,
),
),
),
......@@ -178,9 +212,11 @@ class _AccountslistState extends State<Accountslist> {
child: Text(
subHeadings[j] ?? "-",
style: TextStyle(
fontFamily: "JakartaMedium",
fontFamily:
"JakartaMedium",
fontSize: 14,
color: AppColors.grey_thick,
color:
AppColors.grey_thick,
),
),
),
......@@ -190,23 +226,31 @@ class _AccountslistState extends State<Accountslist> {
}),
InkResponse(
onTap: () async {
print("length, ${accountList.length}");
print(
"length, ${accountList.length}",
);
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) => Accountslistdetails(
accountID: accountList[index].id,
(context) =>
Accountslistdetails(
accountID:
accountList[index]
.id,
),
),
);
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 5),
padding: EdgeInsets.symmetric(
vertical: 5,
),
child: Row(
crossAxisAlignment:
CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.start,
mainAxisAlignment:
MainAxisAlignment.start,
children: [
Text(
"View Details",
......@@ -232,7 +276,9 @@ class _AccountslistState extends State<Accountslist> {
],
),
),
):Emptywidget(context),)
)
: Emptywidget(context),
),
),
onWillPop: () {
provider.pageNum = 1;
......@@ -243,7 +289,6 @@ class _AccountslistState extends State<Accountslist> {
);
}
Future<void> _showFilterSheet(BuildContext context) {
return showModalBottomSheet(
useSafeArea: true,
......@@ -286,12 +331,31 @@ class _AccountslistState extends State<Accountslist> {
),
),
),
textControllerWidget(context, provider.companyNameController, "Company Name", (p0) {
},TextInputType.text,false,null),
textControllerWidget(context, provider.mobileNumberController, "Mobile Number", (p0) {
},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly),
textControllerWidget(
context,
provider.companyNameController,
"Company Name",
(p0) {},
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(
onTap: () {
Navigator.pop(context);
......@@ -302,8 +366,14 @@ class _AccountslistState extends State<Accountslist> {
child: Container(
height: 45,
alignment: Alignment.center,
margin: EdgeInsets.symmetric(horizontal: 10,vertical: 15),
padding: EdgeInsets.symmetric(horizontal: 10, vertical: 5),
margin: EdgeInsets.symmetric(
horizontal: 10,
vertical: 15,
),
padding: EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
decoration: BoxDecoration(
color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15),
......@@ -331,7 +401,6 @@ class _AccountslistState extends State<Accountslist> {
);
}
Future<bool> _onBackPressed(BuildContext context) async {
Provider.of<Accountslistprovider>(context, listen: false).pageNum = 1;
Navigator.pop(context, true);
......
This diff is collapsed.
......@@ -8,6 +8,7 @@ import 'package:provider/provider.dart';
import '../../Utils/app_colors.dart';
import '../../Utils/commonWidgets.dart';
import '../finance/FileViewer.dart';
import 'editOrderAccountDetails.dart';
class Ordersdetailsbymodes extends StatefulWidget {
final pageTitleName;
......@@ -380,7 +381,7 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
...List.generate(3, (index) {
final assetnames = [
"order_list_svg_1",
"crm_contact_edit",
"order_list_svg_2",
"order_list_svg_3",
"order_list_svg_3",
......@@ -396,14 +397,18 @@ class _OrdersdetailsbymodesState extends State<Ordersdetailsbymodes> {
switch (index) {
case 0:
Navigator.pop(context);
// Navigator.push(
// context,
// MaterialPageRoute(
// builder:
// (context) =>
// Orderdetailspaymenthistory(),
// ),
// );
Navigator.push(
context,
MaterialPageRoute(
builder:
(context) =>
Editorderaccountdetails(
mode: widget.mode,
pageTitleName: "Edit Order (${widget.mode})",
orderID: provider.orderDetails.id,
),
),
);
break;
case 1:
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