Commit 381932be authored by Sai Srinivas's avatar Sai Srinivas
Browse files

27-06-2025 By Sai Srinivas

Add Order Module Test cases.
parent 722d6c9c
...@@ -24,6 +24,12 @@ import '../HomeScreenNotifier.dart'; ...@@ -24,6 +24,12 @@ import '../HomeScreenNotifier.dart';
class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController(); class Addorderprovider extends ChangeNotifier {TextEditingController dropDownSearchController = TextEditingController();
TextEditingController dropDownTpcSearchController = TextEditingController(); TextEditingController dropDownTpcSearchController = TextEditingController();
TextEditingController billingStateSearchController = TextEditingController();
TextEditingController billingDistrictSearchController = TextEditingController();
TextEditingController billingSubLocSearchController = TextEditingController();
TextEditingController dispatchStateSearchController = TextEditingController();
TextEditingController dispatchDistrictSearchController = TextEditingController();
TextEditingController dispatchSubLocSearchController = TextEditingController();
TextEditingController billingNameController = TextEditingController(); TextEditingController billingNameController = TextEditingController();
TextEditingController billingAddressController = TextEditingController(); TextEditingController billingAddressController = TextEditingController();
...@@ -802,13 +808,13 @@ void updateRowCalculations(int index) { ...@@ -802,13 +808,13 @@ void updateRowCalculations(int index) {
if (data != null) { if (data != null) {
if (data.error == "0") { if (data.error == "0") {
_tpcApplicable = ["Yes","No"]; _tpcApplicable = ["Yes","No"];
_erectionScope = data.erectionScope!; _erectionScope = data.erectionScope??[];
_unloadingScope = data.unloadingScope!; _unloadingScope = data.unloadingScope??[];
_freightScope = data.freightScope!; _freightScope = data.freightScope??[];
_employees = data.employees!; _employees = data.employees??[];
_billingStates = data.states!; _billingStates = data.states??[];
_dispatchStates = data.states!; _dispatchStates = data.states??[];
_saleProducts = data.saleProducts!; _saleProducts = data.saleProducts??[];
checkDropdownselected(); checkDropdownselected();
...@@ -1314,6 +1320,14 @@ void updateRowCalculations(int index) { ...@@ -1314,6 +1320,14 @@ void updateRowCalculations(int index) {
billingPincodeController.clear(); billingPincodeController.clear();
dispatchAddressController.clear(); dispatchAddressController.clear();
dispatchPincodeController.clear(); dispatchPincodeController.clear();
billingStateSearchController.clear();
billingDistrictSearchController.clear();
billingSubLocSearchController.clear();
dispatchStateSearchController.clear();
dispatchDistrictSearchController.clear();
dispatchSubLocSearchController.clear();
gstController.clear(); gstController.clear();
orderReceivedDateController.clear(); orderReceivedDateController.clear();
tpcAmountController.clear(); tpcAmountController.clear();
......
...@@ -153,13 +153,17 @@ textInputAction, ...@@ -153,13 +153,17 @@ textInputAction,
onChanged: onChanged, onChanged: onChanged,
focusNode: focusNode, focusNode: focusNode,
onTapUpOutside: (event) { onTapUpOutside: (event) {
if(focusNode.hasFocus){ if(focusNode!=null){
focusNode.unfocus(); if(focusNode.hasFocus){
focusNode.unfocus();
}
} }
}, },
textInputAction: textInputAction, textInputAction: textInputAction,
onEditingComplete: () { onEditingComplete: () {
focusNode.unfocus(); if(focusNode!=null){
focusNode.unfocus();
}
if(focusNode2!=null){ if(focusNode2!=null){
focusNode2.requestFocus(); focusNode2.requestFocus();
} }
......
...@@ -38,6 +38,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment>{ ...@@ -38,6 +38,7 @@ class _AddcommonpaymentState extends State<Addcommonpayment>{
@override @override
void dispose() { void dispose() {
focusNodes.map((e) => e.dispose(),);
super.dispose(); super.dispose();
} }
......
...@@ -25,6 +25,7 @@ class AddorderScreen extends StatefulWidget { ...@@ -25,6 +25,7 @@ class AddorderScreen extends StatefulWidget {
class _AddorderScreenState extends State<AddorderScreen> { class _AddorderScreenState extends State<AddorderScreen> {
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode(); FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void initState() { void initState() {
...@@ -43,6 +44,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -43,6 +44,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void dispose() { void dispose() {
focusNodes.map((e)=>e.dispose());
focusNode.dispose();
focusNodetpc.dispose();
super.dispose(); super.dispose();
} }
...@@ -76,61 +80,78 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -76,61 +80,78 @@ Dropdowntheme ddtheme = Dropdowntheme();
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
TextWidget(context, "Account"), TextWidget(context, "Account"),
Container( InkResponse(
alignment: Alignment.center, onTap: () {
decoration: BoxDecoration( if (focusNode.hasFocus) {
color: AppColors.text_field_color, focusNode.unfocus();
borderRadius: BorderRadius.circular(14), } else {
), FocusScope.of(context).requestFocus(focusNode);
child: ListTile( }
title: TextFormField( },
focusNode: focusNode, child: Container(
onTapUpOutside: (event) { alignment: Alignment.center,
focusNode.unfocus(); decoration: BoxDecoration(
}, color: AppColors.text_field_color,
controller: provider.dropDownSearchController, borderRadius: BorderRadius.circular(14),
onChanged: (value) async {
Future.delayed(
Duration(milliseconds: 100),
() async {
await provider
.ordersAddOrderSelectAccountAPIFunction(
context,
widget.mode,
provider.selectedAccountID,
value,
);
},
);
},
decoration: InputDecoration(
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
isDense: true,
contentPadding: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Select Account Type',
hintStyle: const TextStyle(fontSize: 12),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
),
), ),
child: ListTile(
trailing: InkResponse( onTap: (){
onTap: () {
if (focusNode.hasFocus) { if (focusNode.hasFocus) {
focusNode.unfocus(); focusNode.unfocus();
} else { } else {
FocusScope.of(context).requestFocus(focusNode); FocusScope.of(context).requestFocus(focusNode);
} }
}, },
child: SvgPicture.asset( title: TextFormField(
"assets/svg/arrow_dropdown.svg", focusNode: focusNode,
height: 25, onTapUpOutside: (event) {
width: 20, focusNode.unfocus();
},
controller: provider.dropDownSearchController,
onChanged: (value) async {
Future.delayed(
Duration(milliseconds: 100),
() async {
await provider
.ordersAddOrderSelectAccountAPIFunction(
context,
widget.mode,
provider.selectedAccountID,
value,
);
},
);
},
decoration: InputDecoration(
enabledBorder: InputBorder.none,
focusedBorder: InputBorder.none,
isDense: true,
contentPadding: const EdgeInsets.symmetric(
horizontal: 0,
vertical: 8,
),
hintText: 'Select Account Type',
hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
),
),
),
trailing: InkResponse(
onTap: () {
if (focusNode.hasFocus) {
focusNode.unfocus();
} else {
FocusScope.of(context).requestFocus(focusNode);
}
},
child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg",
height: 25,
width: 20,
),
), ),
), ),
), ),
...@@ -141,7 +162,7 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -141,7 +162,7 @@ Dropdowntheme ddtheme = Dropdowntheme();
margin: EdgeInsets.symmetric(horizontal: 0), margin: EdgeInsets.symmetric(horizontal: 0),
child: Container( child: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
height: 150, height: widget.mode=="self"?50:150,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
...@@ -306,6 +327,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -306,6 +327,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[0],
null,
TextInputAction.done
), ),
errorWidget(context, provider.billingNameError), errorWidget(context, provider.billingNameError),
TextWidget(context, "Billing State"), TextWidget(context, "Billing State"),
...@@ -355,6 +379,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -355,6 +379,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
); );
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingStateSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingStateSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -410,6 +472,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -410,6 +472,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
); );
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.district
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingDistrictSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -453,6 +553,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -453,6 +553,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
value!.subLocality!; value!.subLocality!;
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.billingSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.billingSubLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.billingSubLocSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -470,6 +608,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -470,6 +608,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[1],
focusNodes[2],
TextInputAction.next
), ),
errorWidget(context, provider.billingAddressError), errorWidget(context, provider.billingAddressError),
...@@ -481,6 +622,10 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -481,6 +622,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
focusNodes[2],
null,
TextInputAction.done,
6
), ),
errorWidget(context, provider.billingPincodeError), errorWidget(context, provider.billingPincodeError),
...@@ -529,6 +674,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -529,6 +674,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
); );
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchStateSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchStateSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sate...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.name
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchStateSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -588,6 +771,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -588,6 +771,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
); );
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchDistrictSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchDistrictSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search District...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.district
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchDistrictSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -631,6 +852,44 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -631,6 +852,44 @@ Dropdowntheme ddtheme = Dropdowntheme();
value!.subLocality!; value!.subLocality!;
} }
}, },
dropdownSearchData: DropdownSearchData(
searchInnerWidgetHeight: 50,
searchController:provider.dispatchSubLocSearchController,
searchInnerWidget: Padding(
padding: const EdgeInsets.all(8),
child: TextFormField(
controller:
provider.dispatchSubLocSearchController,
decoration: InputDecoration(
isDense: true,
contentPadding:
const EdgeInsets.symmetric(
horizontal: 10,
vertical: 8,
),
hintText: 'Search Sub Location...',
border: OutlineInputBorder(
borderRadius:
BorderRadius.circular(8),
),
),
),
),
searchMatchFn: (item, searchValue) {
return item.value?.subLocality
?.toLowerCase()
.contains(
searchValue.toLowerCase(),
) ??
false;
},
),
onMenuStateChange: (isOpen) {
if (!isOpen) {
provider.dispatchSubLocSearchController
.clear();
}
},
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData: ddtheme.buttonStyleData,
iconStyleData: ddtheme.iconStyleData, iconStyleData: ddtheme.iconStyleData,
menuItemStyleData: ddtheme.menuItemStyleData, menuItemStyleData: ddtheme.menuItemStyleData,
...@@ -649,6 +908,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -649,6 +908,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[3],
focusNodes[4],
TextInputAction.next
), ),
errorWidget(context, provider.dispatchAddressError), errorWidget(context, provider.dispatchAddressError),
...@@ -660,6 +922,10 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -660,6 +922,10 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
focusNodes[4],
focusNodes[5],
TextInputAction.next,
6
), ),
errorWidget(context, provider.dispatchPincodeError), errorWidget(context, provider.dispatchPincodeError),
...@@ -668,9 +934,12 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -668,9 +934,12 @@ Dropdowntheme ddtheme = Dropdowntheme();
provider.gstController, provider.gstController,
"GST Number", "GST Number",
provider.onChangedGst, provider.onChangedGst,
TextInputType.number, TextInputType.text,
false, false,
FilteringTextInputFormatter.digitsOnly, null,
focusNodes[5],
null,
TextInputAction.done
), ),
errorWidget(context, provider.gstError), errorWidget(context, provider.gstError),
...@@ -965,11 +1234,11 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -965,11 +1234,11 @@ Dropdowntheme ddtheme = Dropdowntheme();
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
isDense: true, isDense: true,
contentPadding: const EdgeInsets.symmetric( contentPadding: const EdgeInsets.symmetric(
horizontal: 10, horizontal: 0,
vertical: 8, vertical: 8,
), ),
hintText: 'Select TPC Agent', hintText: 'Select TPC Agent',
hintStyle: const TextStyle(fontSize: 12), hintStyle: const TextStyle(fontSize: 14),
border: OutlineInputBorder( border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
), ),
...@@ -1062,6 +1331,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1062,6 +1331,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
focusNodes[6],
focusNodes[7],
TextInputAction.next
), ),
errorWidget(context, provider.tpcAmountError), errorWidget(context, provider.tpcAmountError),
], ],
...@@ -1223,8 +1495,9 @@ Dropdowntheme ddtheme = Dropdowntheme(); ...@@ -1223,8 +1495,9 @@ Dropdowntheme ddtheme = Dropdowntheme();
} }
class OrderForm extends StatelessWidget { class OrderForm extends StatelessWidget {
const OrderForm({super.key}); OrderForm({super.key});
FocusNode focusNode = FocusNode();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
...@@ -1329,9 +1602,11 @@ class OrderForm extends StatelessWidget { ...@@ -1329,9 +1602,11 @@ class OrderForm extends StatelessWidget {
), ),
) )
.toList(), .toList(),
value: provider.saleProducts.firstWhere( value:
provider.saleProducts.contains(provider.selectedSaleProducts)?
provider.saleProducts.firstWhere(
(product) => product.id == provider.selectedSaleProductID[index], (product) => product.id == provider.selectedSaleProductID[index],
), ):null,
onChanged: (SaleProducts? value) { onChanged: (SaleProducts? value) {
if (value != null) { if (value != null) {
if (provider if (provider
...@@ -1372,6 +1647,10 @@ class OrderForm extends StatelessWidget { ...@@ -1372,6 +1647,10 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1405,6 +1684,9 @@ class OrderForm extends StatelessWidget { ...@@ -1405,6 +1684,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
), ),
), ),
], ],
...@@ -1441,6 +1723,9 @@ class OrderForm extends StatelessWidget { ...@@ -1441,6 +1723,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1473,6 +1758,9 @@ class OrderForm extends StatelessWidget { ...@@ -1473,6 +1758,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
), ),
), ),
const SizedBox(width: 8.0), const SizedBox(width: 8.0),
...@@ -1505,6 +1793,9 @@ class OrderForm extends StatelessWidget { ...@@ -1505,6 +1793,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.next
), ),
), ),
], ],
...@@ -1537,6 +1828,9 @@ class OrderForm extends StatelessWidget { ...@@ -1537,6 +1828,9 @@ class OrderForm extends StatelessWidget {
TextInputType.number, TextInputType.number,
true, true,
null, null,
null,
null,
TextInputAction.next
), ),
), ),
// const SizedBox(width: 8.0), // const SizedBox(width: 8.0),
...@@ -1575,6 +1869,9 @@ class OrderForm extends StatelessWidget { ...@@ -1575,6 +1869,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text, TextInputType.text,
true, true,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1584,6 +1881,9 @@ class OrderForm extends StatelessWidget { ...@@ -1584,6 +1881,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text, TextInputType.text,
true, true,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1593,6 +1893,9 @@ class OrderForm extends StatelessWidget { ...@@ -1593,6 +1893,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text, TextInputType.text,
true, true,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1602,6 +1905,9 @@ class OrderForm extends StatelessWidget { ...@@ -1602,6 +1905,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text, TextInputType.text,
true, true,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1611,6 +1917,9 @@ class OrderForm extends StatelessWidget { ...@@ -1611,6 +1917,9 @@ class OrderForm extends StatelessWidget {
TextInputType.text, TextInputType.text,
true, true,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
null,
null,
TextInputAction.none
), ),
textControllerWidget( textControllerWidget(
context, context,
...@@ -1618,8 +1927,11 @@ class OrderForm extends StatelessWidget { ...@@ -1618,8 +1927,11 @@ class OrderForm extends StatelessWidget {
"Note", "Note",
(p0) {}, (p0) {},
TextInputType.text, TextInputType.text,
true, false,
FilteringTextInputFormatter.digitsOnly, null,
focusNode,
null,
TextInputAction.done
), ),
], ],
), ),
......
...@@ -17,6 +17,7 @@ import '../../Utils/dropdownTheme.dart'; ...@@ -17,6 +17,7 @@ import '../../Utils/dropdownTheme.dart';
class AddpaymentScreen extends StatefulWidget { class AddpaymentScreen extends StatefulWidget {
final pageTitleName; final pageTitleName;
final mode; final mode;
const AddpaymentScreen({super.key, this.pageTitleName, this.mode}); const AddpaymentScreen({super.key, this.pageTitleName, this.mode});
@override @override
...@@ -26,21 +27,18 @@ class AddpaymentScreen extends StatefulWidget { ...@@ -26,21 +27,18 @@ class AddpaymentScreen extends StatefulWidget {
class _AddpaymentScreenState extends State<AddpaymentScreen> { class _AddpaymentScreenState extends State<AddpaymentScreen> {
Timer? _debounce; Timer? _debounce;
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
String? selectedValue; String? selectedValue;
final TextEditingController textEditingController = TextEditingController(); final TextEditingController textEditingController = TextEditingController();
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Addpaymentprovider>( var provider = Provider.of<Addpaymentprovider>(context, listen: false);
context,
listen: false,
);
if (provider.dateNow == null) { if (provider.dateNow == null) {
provider.setDate(DateTime.now()); provider.setDate(DateTime.now());
} }
...@@ -56,6 +54,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -56,6 +54,7 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
@override @override
void dispose() { void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose(); super.dispose();
} }
...@@ -68,12 +67,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -68,12 +67,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Addpaymentprovider>( return Consumer<Addpaymentprovider>(
builder: (context, provider, child) { builder: (context, provider, child) {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white, backgroundColor: AppColors.white,
appBar: appbar2(context, "${widget.pageTitleName}",provider.resetForm,SizedBox(width: 0,)), appBar: appbar2(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
),
body: Container( body: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
...@@ -84,7 +87,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -84,7 +87,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
TextWidget(context, "Account"), TextWidget(context, "Account"),
Container( Container(
alignment: Alignment.center, alignment: Alignment.center,
...@@ -100,17 +102,18 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -100,17 +102,18 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
}, },
controller: provider.dropDownSearchController, controller: provider.dropDownSearchController,
onChanged: (value) async { onChanged: (value) async {
Future.delayed(Duration(milliseconds: 100),() async { Future.delayed(
await provider.ordersAddPaymentSelectAccountAPIFunction( Duration(milliseconds: 100),
context, () async {
widget.mode, await provider
provider.selectedAccountID, .ordersAddPaymentSelectAccountAPIFunction(
value, context,
); widget.mode,
},); provider.selectedAccountID,
value,
);
},
);
}, },
decoration: InputDecoration( decoration: InputDecoration(
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
...@@ -137,15 +140,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -137,15 +140,16 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
} }
}, },
child: SvgPicture.asset( child: SvgPicture.asset(
"assets/svg/arrow_dropdown.svg", "assets/svg/arrow_dropdown.svg",
height: 25, height: 25,
width: 20, width: 20,
), ),
), ),
), ),
), ),
if(provider.accountList.isNotEmpty && focusNode.hasFocus)...[ if (provider.accountList.isNotEmpty &&
focusNode.hasFocus) ...[
Card( Card(
margin: EdgeInsets.symmetric(horizontal: 0), margin: EdgeInsets.symmetric(horizontal: 0),
child: Container( child: Container(
...@@ -153,7 +157,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -153,7 +157,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
height: 150, height: 150,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
child: Scrollbar( child: Scrollbar(
thickness: 2.5, thickness: 2.5,
...@@ -165,31 +168,50 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -165,31 +168,50 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
physics: AlwaysScrollableScrollPhysics(), physics: AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) { itemBuilder: (context, index) {
return InkResponse( return InkResponse(
onTap: () async{ onTap: () async {
if (provider.accountList.isNotEmpty) { if (provider.accountList.isNotEmpty) {
provider.selectedAccountList = provider.accountList[index]; provider.selectedAccountList =
provider.accountList[index];
print("Selected Complaint Type: ${provider.accountList[index].text}, ID: ${provider.accountList[index].id}"); print(
provider.selectedAccountID = provider.accountList[index].id!; "Selected Complaint Type: ${provider.accountList[index].text}, ID: ${provider.accountList[index].id}",
provider.selectedAccountName = provider.accountList[index].text!; );
print("hfjkshfg" + provider.selectedAccountID.toString()); provider.selectedAccountID =
provider.dropDownSearchController.text = provider.accountList[index].text!; provider.accountList[index].id!;
} provider.selectedAccountName =
provider.ordersAddPaymentSelectOrderAPIFunction(context, provider.selectedAccountID); provider.accountList[index].text!;
provider.accountList = []; print(
}, "hfjkshfg" +
child: SizedBox( provider.selectedAccountID
height: 45, .toString(),
child: Align( );
alignment: Alignment.centerLeft, provider.dropDownSearchController.text =
child: Text(provider.accountList[index].text!)))); provider.accountList[index].text!;
},), }
provider
.ordersAddPaymentSelectOrderAPIFunction(
context,
provider.selectedAccountID,
);
provider.accountList = [];
},
child: SizedBox(
height: 45,
child: Align(
alignment: Alignment.centerLeft,
child: Text(
provider.accountList[index].text!,
),
),
),
);
},
),
), ),
), ),
) ),
], ],
// DropdownButtonHideUnderline( // DropdownButtonHideUnderline(
// child: Row( // child: Row(
// children: [ // children: [
...@@ -481,9 +503,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -481,9 +503,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
// ], // ],
// ), // ),
// ), // ),
errorWidget(context, provider.selectAccountError), errorWidget(context, provider.selectAccountError),
textControllerWidget( textControllerWidget(
...@@ -491,150 +510,204 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -491,150 +510,204 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider.amountController, provider.amountController,
"Amount", "Amount",
provider.onChangeAmount, provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[0],
null,
TextInputAction.next
), ),
errorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
///Addorderbutton ///Addorderbutton
if(provider.selectedAccountID!.isNotEmpty)...[ if (provider.selectedAccountID!.isNotEmpty) ...[
InkResponse( InkResponse(
onTap: () { onTap: () {
// if (provider.selectedOrderIds.length < provider.orderList.length) { // if (provider.selectedOrderIds.length < provider.orderList.length) {
provider.addNewRow(); provider.addNewRow();
// } else { // } else {
// ScaffoldMessenger.of(context).showSnackBar( // ScaffoldMessenger.of(context).showSnackBar(
// SnackBar( // SnackBar(
// content: Text('No more unique order IDs or statuses available'), // content: Text('No more unique order IDs or statuses available'),
// ), // ),
// ); // );
// } // }
}, },
child: Container( child: Container(
margin: EdgeInsets.symmetric(vertical: 10), margin: EdgeInsets.symmetric(vertical: 10),
height: 45, height: 45,
width: MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width,
decoration: BoxDecoration( decoration: BoxDecoration(
color: Color(0xFFE6F6FF), color: Color(0xFFE6F6FF),
borderRadius: BorderRadius.circular(12), borderRadius: BorderRadius.circular(12),
border: Border.all( border: Border.all(
color: AppColors.app_blue,
width: 0.5,
),
),
child: Center(
child: Text(
"+ Add Order",
style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue, color: AppColors.app_blue,
width: 0.5,
),
),
child: Center(
child: Text(
"+ Add Order",
style: TextStyle(
fontFamily: "JakartaMedium",
color: AppColors.app_blue,
),
), ),
), ),
), ),
), ),
), if (provider.orderAmountControllers.length > 0) ...[
if(provider.orderAmountControllers.length>0)...[ Row(
Row( children: [
children: [ Expanded(
Expanded( child: ListView.builder(
child: ListView.builder( itemCount:
itemCount: provider.orderAmountControllers.length, provider.orderAmountControllers.length,
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
shrinkWrap: true, shrinkWrap: true,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return Row( return Row(
children: [ children: [
Expanded( Expanded(
flex:3, flex: 3,
child: SizedBox( child: SizedBox(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment:
children: [ CrossAxisAlignment.start,
TextWidget(context, "Order"),
Row(
children: [ children: [
Expanded( TextWidget(context, "Order"),
child: DropdownButtonHideUnderline( Row(
child: DropdownButton2<OrderList>( children: [
isExpanded: true, Expanded(
hint: Text( child: DropdownButtonHideUnderline(
'Select Account Type', child: DropdownButton2<
style: TextStyle(fontSize: 14), OrderList
overflow: TextOverflow.ellipsis, >(
), isExpanded: true,
items: hint: Text(
provider.orderList 'Select Account Type',
.map( style: TextStyle(
(ord) => fontSize: 14,
DropdownMenuItem<OrderList>(
value: ord,
child: Text(
"(Order Number: ${ord.orderNumber}) + (Order Amount: ${ord.totalAmount}) + (Balance Amount: ${ord.balanceAmount}) + (Date Time: ${ord.createdDatetime})" ?? '',
style: const TextStyle(
fontSize: 14,
),
overflow: TextOverflow.ellipsis,
),
), ),
) overflow:
.toList(), TextOverflow
// value: provider.selectedOrderLists, .ellipsis,
value: provider.orderList.firstWhere( ),
(product) => product.orderId == provider.selectedOrderIds[index], items:
), provider.orderList
onChanged: (OrderList? value) { .map(
if (value != null) { (
if (provider.orderList.isNotEmpty) { ord,
provider.selectedOrderLists = value; ) => DropdownMenuItem<
print( OrderList
"Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}", >(
); value: ord,
provider.updateSelectedOrderId(index,provider.selectedOrderLists); child: Text(
// provider.selectedOrderIds = value!.orderId!; "(Order Number: ${ord.orderNumber}) + (Order Amount: ${ord.totalAmount}) + (Balance Amount: ${ord.balanceAmount}) + (Date Time: ${ord.createdDatetime})" ??
// provider.selectedOrderNumbers = value!.orderNumber!; '',
print( style: const TextStyle(
"hfjkshfg" + fontSize:
provider.selectedOrderIds.toString(), 14,
); ),
} overflow:
} TextOverflow
}, .ellipsis,
buttonStyleData: ddtheme.buttonStyleData, ),
iconStyleData: ddtheme.iconStyleData, ),
menuItemStyleData: ddtheme.menuItemStyleData, )
dropdownStyleData: ddtheme.dropdownStyleData, .toList(),
// value: provider.selectedOrderLists,
value: provider
.orderList
.firstWhere(
(product) =>
product
.orderId ==
provider
.selectedOrderIds[index],
),
onChanged: (
OrderList? value,
) {
if (value != null) {
if (provider
.orderList
.isNotEmpty) {
provider.selectedOrderLists =
value;
print(
"Selected Complaint Type: ${value.orderId}, ID: ${value.orderNumber}",
);
provider.updateSelectedOrderId(
index,
provider
.selectedOrderLists,
);
// provider.selectedOrderIds = value!.orderId!;
// provider.selectedOrderNumbers = value!.orderNumber!;
print(
"hfjkshfg" +
provider
.selectedOrderIds
.toString(),
);
}
}
},
buttonStyleData:
ddtheme
.buttonStyleData,
iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
),
),
), ),
), ],
), ),
], ],
), ),
], ),
), ),
),
),
SizedBox(width: 10), SizedBox(width: 10),
Expanded( Expanded(
flex: 2, flex: 2,
child: textControllerWidget(context, provider.orderAmountControllers[index], "Enter Order Amount", (p0) { child: textControllerWidget(
context,
},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly), provider
), .orderAmountControllers[index],
// SizedBox(width: 10), "Enter Order Amount",
// (p0) {},
// IconButton( TextInputType.number,
// icon: Icon(Icons.delete), false,
// onPressed: provider.orderAmountControllers.length > 1 FilteringTextInputFormatter
// ? () => provider.removeRow(index) .digitsOnly,
// : null, // Prevent removing the last row null,null,TextInputAction.next
// ), ),
], ),
); // SizedBox(width: 10),
}, //
), // IconButton(
// icon: Icon(Icons.delete),
// onPressed: provider.orderAmountControllers.length > 1
// ? () => provider.removeRow(index)
// : null, // Prevent removing the last row
// ),
],
);
},
),
),
],
), ),
], ],
),
],
], ],
textControllerWidget( textControllerWidget(
...@@ -642,7 +715,12 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -642,7 +715,12 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
provider.orderAdjustedAmountController, provider.orderAdjustedAmountController,
"Order Adjusted Amount", "Order Adjusted Amount",
provider.onChangeorderAdjustedAmount, provider.onChangeorderAdjustedAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],
null,
TextInputAction.done
), ),
errorWidget(context, provider.orderAdjustedAmountError), errorWidget(context, provider.orderAdjustedAmountError),
TextWidget(context, "Description"), TextWidget(context, "Description"),
...@@ -664,20 +742,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -664,20 +742,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
items: items:
provider.description provider.description
.map( .map(
(pm) => DropdownMenuItem<String>( (pm) => DropdownMenuItem<String>(
value: pm, value: pm,
child: Text( child: Text(
pm, pm,
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
) )
.toList(), .toList(),
value: provider.selectedDescription, value: provider.selectedDescription,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
...@@ -698,36 +776,37 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -698,36 +776,37 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
errorWidget(context, provider.descriptionError), errorWidget(context, provider.descriptionError),
TextWidget(context, "Payment Received Date"), TextWidget(context, "Payment Received Date"),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
provider.showDatePickerDialog(context); provider.showDatePickerDialog(context);
}, },
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
height: 50,
height: 50,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.text_field_color, color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0), padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
0,
),
child: TextFormField( child: TextFormField(
controller: provider.paymentReceivedDateController, controller:
provider.paymentReceivedDateController,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
enabled: false, enabled: false,
maxLines: 1, maxLines: 1,
readOnly: true, readOnly: true,
onChanged: (value) { onChanged: (value) {},
},
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Date", hintText: "Enter Date",
hintStyle: TextStyle( hintStyle: TextStyle(
...@@ -768,20 +847,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -768,20 +847,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
], ],
), ),
items: items:
provider.paymentMode provider.paymentMode
.map( .map(
(pm) => DropdownMenuItem<String>( (pm) => DropdownMenuItem<String>(
value: pm, value: pm,
child: Text( child: Text(
pm, pm,
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
) )
.toList(), .toList(),
value: provider.selectedPaymentMode, value: provider.selectedPaymentMode,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
...@@ -802,16 +881,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -802,16 +881,20 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
errorWidget(context, provider.paymentModeError), errorWidget(context, provider.paymentModeError),
textControllerWidget( textControllerWidget(
context, context,
provider.paymentRefController, provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf", "Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef,TextInputType.text,false,null provider.onChangepaymentRef,
TextInputType.text,
false,
null,
focusNodes[2],
null,
TextInputAction.done
), ),
errorWidget(context, provider.paymentRefError), errorWidget(context, provider.paymentRefError),
InkResponse( InkResponse(
onTap: () { onTap: () {
_showAttachmentSheet(context); _showAttachmentSheet(context);
...@@ -839,44 +922,59 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -839,44 +922,59 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
), ),
), ),
), ),
if(provider.imagePicked==1 && provider.imagePath!=null)...[ if (provider.imagePicked == 1 &&
provider.imagePath != null) ...[
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 4.0), padding: const EdgeInsets.symmetric(vertical: 4.0),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [ children: [
Text("${provider.imagePath}",style: TextStyle( Text(
"${provider.imagePath}",
style: TextStyle(
color: AppColors.semi_black, color: AppColors.semi_black,
fontSize: 11, fontSize: 11,
fontWeight: FontWeight.w600 fontWeight: FontWeight.w600,
),), ),
),
InkResponse( InkResponse(
onTap: () { onTap: () {
provider.imagePicked = 0; provider.imagePicked = 0;
provider.imagePath = null; provider.imagePath = null;
provider.imageFilePath = null; provider.imageFilePath = null;
}, },
child: SvgPicture.asset("assets/svg/ic_close.svg",width: 15,height: 15,)) child: SvgPicture.asset(
"assets/svg/ic_close.svg",
width: 15,
height: 15,
),
),
], ],
), ),
) ),
], ],
], ],
), ),
), ),
), ),
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap: () { onTap: () {
provider.selectedOrders = provider.getFormData(); provider.selectedOrders = provider.getFormData();
print(provider.selectedOrders); print(provider.selectedOrders);
provider.ordersAddPaymentAPISubmitFunction(context, provider.selectedAccountID, provider.selectedDescription, provider.selectedOrders, provider.selectedPaymentMode); provider.ordersAddPaymentAPISubmitFunction(
context,
provider.selectedAccountID,
provider.selectedDescription,
provider.selectedOrders,
provider.selectedPaymentMode,
);
}, },
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,
...@@ -901,7 +999,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -901,7 +999,6 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
}, },
); );
} }
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
...@@ -921,9 +1018,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -921,9 +1018,9 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
return Padding( return Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: bottom:
MediaQuery.of( MediaQuery.of(
context, context,
).viewInsets.bottom, // This handles keyboard ).viewInsets.bottom, // This handles keyboard
), ),
child: Container( child: Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
...@@ -985,7 +1082,3 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> { ...@@ -985,7 +1082,3 @@ class _AddpaymentScreenState extends State<AddpaymentScreen> {
); );
} }
} }
...@@ -17,20 +17,17 @@ class AddtpcagentScreen extends StatefulWidget { ...@@ -17,20 +17,17 @@ class AddtpcagentScreen extends StatefulWidget {
class _AddtpcagentScreenState extends State<AddtpcagentScreen> { class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(10, (index) => FocusNode());
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Tpcagentsprovider>( var provider = Provider.of<Tpcagentsprovider>(context, listen: false);
context,
listen: false,
);
}); });
} }
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer<Tpcagentsprovider>( return Consumer<Tpcagentsprovider>(
...@@ -38,8 +35,12 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -38,8 +35,12 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: appbar2(context, "Add TPC Agent", provider.resetAll, appBar: appbar2(
SizedBox(width: 0,),), context,
"Add TPC Agent",
provider.resetAll,
SizedBox(width: 0),
),
backgroundColor: AppColors.scaffold_bg_color, backgroundColor: AppColors.scaffold_bg_color,
body: Container( body: Container(
child: SingleChildScrollView( child: SingleChildScrollView(
...@@ -50,22 +51,47 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -50,22 +51,47 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
color: Colors.white, color: Colors.white,
borderRadius: BorderRadius.circular(16), borderRadius: BorderRadius.circular(16),
), ),
margin: EdgeInsets.symmetric(vertical: 10, horizontal: 10), margin: EdgeInsets.symmetric(
padding: EdgeInsets.symmetric(vertical: 10, horizontal: 10), vertical: 10,
horizontal: 10,
),
padding: EdgeInsets.symmetric(
vertical: 10,
horizontal: 10,
),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: [
textControllerWidget(
context,
textControllerWidget(context,provider.tpcNameController,"Enter Name",provider.onChangetpcName,TextInputType.text,false,null), provider.tpcNameController,
if(provider.tpcNameError!=null)...[ "Enter Name",
errorWidget(context, provider.tpcNameError) provider.onChangetpcName,
TextInputType.text,
false,
null,
focusNodes[0],
focusNodes[1],
TextInputAction.next
),
if (provider.tpcNameError != null) ...[
errorWidget(context, provider.tpcNameError),
], ],
textControllerWidget(context,provider.tpcMobileNumberController,"Enter Mobile Number",provider.onChangetpcMobileNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly), textControllerWidget(
if(provider.tpcMobileNumberError!=null)...[ context,
errorWidget(context, provider.tpcMobileNumberError) provider.tpcMobileNumberController,
"Enter Mobile Number",
provider.onChangetpcMobileNumber,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[1],
focusNodes[2],TextInputAction.next,10
),
if (provider.tpcMobileNumberError != null) ...[
errorWidget(context, provider.tpcMobileNumberError),
], ],
InkResponse( InkResponse(
...@@ -95,53 +121,115 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -95,53 +121,115 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
), ),
), ),
), ),
if(provider.imagePicked==1 && provider.imagePath!=null)...[ if (provider.imagePicked == 1 &&
provider.imagePath != null) ...[
Padding( Padding(
padding: const EdgeInsets.symmetric(vertical: 4.0), padding: const EdgeInsets.symmetric(
vertical: 4.0,
),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween, mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [ children: [
Text("${provider.imagePath}",style: TextStyle( Text(
"${provider.imagePath}",
style: TextStyle(
color: AppColors.semi_black, color: AppColors.semi_black,
fontSize: 11, fontSize: 11,
fontWeight: FontWeight.w600 fontWeight: FontWeight.w600,
),), ),
),
InkResponse( InkResponse(
onTap: () { onTap: () {
provider.imagePicked = 0; provider.imagePicked = 0;
provider.imagePath = null; provider.imagePath = null;
provider.imageFilePath = null; provider.imageFilePath = null;
}, },
child: SvgPicture.asset("assets/svg/ic_close.svg",width: 15,height: 15,)) child: SvgPicture.asset(
"assets/svg/ic_close.svg",
width: 15,
height: 15,
),
),
], ],
), ),
) ),
], ],
textControllerWidget(context,provider.tpcBankNameController,"Enter Bank Name",provider.onChangetpcBankName,TextInputType.text,false,null), textControllerWidget(
if(provider.tpcBankNameError!=null)...[ context,
errorWidget(context, provider.tpcBankNameError) provider.tpcBankNameController,
"Enter Bank Name",
provider.onChangetpcBankName,
TextInputType.text,
false,
null,
focusNodes[2],focusNodes[3],TextInputAction.next
),
if (provider.tpcBankNameError != null) ...[
errorWidget(context, provider.tpcBankNameError),
], ],
textControllerWidget(
textControllerWidget(context,provider.tpcBankBeneficiaryNameController,"Enter Bank Beneficiary Name",provider.onChangetpcBankBeneficiaryName,TextInputType.text,false,null), context,
if(provider.tpcBankBeneficiaryNameError!=null)...[ provider.tpcBankBeneficiaryNameController,
errorWidget(context, provider.tpcBankBeneficiaryNameError) "Enter Bank Beneficiary Name",
provider.onChangetpcBankBeneficiaryName,
TextInputType.text,
false,
null,
focusNodes[3],focusNodes[4],TextInputAction.next
),
if (provider.tpcBankBeneficiaryNameError != null) ...[
errorWidget(
context,
provider.tpcBankBeneficiaryNameError,
),
], ],
textControllerWidget(context,provider.tpcBankAccountNumberController,"Enter Bank Account Number",provider.onChangetpcBankAccountNumber,TextInputType.number,false,FilteringTextInputFormatter.digitsOnly), textControllerWidget(
if(provider.tpcBankAccountNumberError!=null)...[ context,
errorWidget(context, provider.tpcBankAccountNumberError) provider.tpcBankAccountNumberController,
"Enter Bank Account Number",
provider.onChangetpcBankAccountNumber,
TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[4],focusNodes[5],TextInputAction.next
),
if (provider.tpcBankAccountNumberError != null) ...[
errorWidget(
context,
provider.tpcBankAccountNumberError,
),
], ],
textControllerWidget(context,provider.tpcBankIFSCController,"Enter Bank IFSC",provider.onChangetpcBankIFSC,TextInputType.text,false,null), textControllerWidget(
if(provider.tpcBankIFSCError!=null)...[ context,
errorWidget(context, provider.tpcBankIFSCError) provider.tpcBankIFSCController,
"Enter Bank IFSC",
provider.onChangetpcBankIFSC,
TextInputType.text,
false,
null,
focusNodes[5],focusNodes[6],TextInputAction.next
),
if (provider.tpcBankIFSCError != null) ...[
errorWidget(context, provider.tpcBankIFSCError),
], ],
textControllerWidget(context,provider.tpcNoteController,"Enter Description",provider.onChangetpcNote,TextInputType.text,false,null), textControllerWidget(
if(provider.tpcNoteError!=null)...[ context,
errorWidget(context, provider.tpcNoteError) provider.tpcNoteController,
"Enter Description",
provider.onChangetpcNote,
TextInputType.text,
false,
null,
focusNodes[6],focusNodes[7],TextInputAction.next
),
if (provider.tpcNoteError != null) ...[
errorWidget(context, provider.tpcNoteError),
], ],
InkWell( InkWell(
onTap: () { onTap: () {
...@@ -173,17 +261,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -173,17 +261,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
], ],
), ),
), ),
], ],
), ),
), ),
), ),
), ),
onWillPop: () { onWillPop: () {
return onBackPressed(context); return onBackPressed(context);
}, },
); );
...@@ -191,8 +275,6 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -191,8 +275,6 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
); );
} }
Future<void> _showAttachmentSheet(BuildContext context) { Future<void> _showAttachmentSheet(BuildContext context) {
return showModalBottomSheet( return showModalBottomSheet(
useSafeArea: true, useSafeArea: true,
...@@ -207,18 +289,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -207,18 +289,13 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
builder: (context, setState) { builder: (context, setState) {
return SafeArea( return SafeArea(
child: Consumer<Tpcagentsprovider>( child: Consumer<Tpcagentsprovider>(
builder: (context, tcpProvider, child) {
builder: (context,tcpProvider, child) {
return Padding( return Padding(
padding: EdgeInsets.only( padding: EdgeInsets.only(
bottom: bottom:
MediaQuery MediaQuery.of(
.of( context,
context, ).viewInsets.bottom, // This handles keyboard
)
.viewInsets
.bottom, // This handles keyboard
), ),
child: Container( child: Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(
...@@ -238,12 +315,12 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -238,12 +315,12 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
child: Text( child: Text(
"Select Source", "Select Source",
style: TextStyle( style: TextStyle(
color: AppColors.app_blue, color: AppColors.app_blue,
fontSize: 16 fontSize: 16,
), ),
), ),
), ),
SizedBox(height: 15,), SizedBox(height: 15),
InkWell( InkWell(
onTap: () { onTap: () {
Navigator.of(context).pop(false); Navigator.of(context).pop(false);
...@@ -258,8 +335,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> { ...@@ -258,8 +335,7 @@ class _AddtpcagentScreenState extends State<AddtpcagentScreen> {
InkWell( InkWell(
onTap: () { onTap: () {
Navigator.of(context).pop(false); Navigator.of(context).pop(false);
tcpProvider.imgFromCamera( tcpProvider.imgFromCamera(context);
context);
}, },
child: Container( child: Container(
height: 35, height: 35,
......
...@@ -30,6 +30,8 @@ class Editadjustedorderlist extends StatefulWidget { ...@@ -30,6 +30,8 @@ class Editadjustedorderlist extends StatefulWidget {
class _EditadjustedorderlistState extends State<Editadjustedorderlist> { class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
List<FocusNode> focusNodes = List.generate(3, (index) => FocusNode());
@override @override
void initState() { void initState() {
super.initState(); super.initState();
...@@ -69,6 +71,7 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -69,6 +71,7 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
@override @override
void dispose() { void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose(); super.dispose();
} }
...@@ -216,9 +219,15 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -216,9 +219,15 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
// value: // value:
// editProvider // editProvider
// .selectedPaidList, // .selectedPaidList,
value: editProvider.paidList.firstWhere( value: editProvider
(product) => product.orderId == editProvider.selectedPaidOrderIDs[index], .paidList
), .firstWhere(
(product) =>
product
.orderId ==
editProvider
.selectedPaidOrderIDs[index],
),
// value:editProvider.paidList.firstWhere( // value:editProvider.paidList.firstWhere(
// ( // (
// ord, // ord,
...@@ -256,10 +265,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -256,10 +265,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
} }
} }
}, },
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData:
iconStyleData: ddtheme.iconStyleData, ddtheme
menuItemStyleData: ddtheme.menuItemStyleData, .buttonStyleData,
dropdownStyleData: ddtheme.dropdownStyleData, iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
), ),
), ),
), ),
...@@ -282,7 +299,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -282,7 +299,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
editProvider editProvider
.editOrderAmountControllers[index], .editOrderAmountControllers[index],
"Enter Order Amount", "Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly (p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter
.digitsOnly,
focusNodes[0],
focusNodes[1],
TextInputAction.next
), ),
), ),
], ],
...@@ -429,10 +453,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -429,10 +453,18 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
} }
} }
}, },
buttonStyleData: ddtheme.buttonStyleData, buttonStyleData:
iconStyleData: ddtheme.iconStyleData, ddtheme
menuItemStyleData: ddtheme.menuItemStyleData, .buttonStyleData,
dropdownStyleData: ddtheme.dropdownStyleData, iconStyleData:
ddtheme
.iconStyleData,
menuItemStyleData:
ddtheme
.menuItemStyleData,
dropdownStyleData:
ddtheme
.dropdownStyleData,
), ),
), ),
), ),
...@@ -455,7 +487,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -455,7 +487,14 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
editProvider editProvider
.editOrderAmountControllers2[j], .editOrderAmountControllers2[j],
"Enter Order Amount", "Enter Order Amount",
(p0) {},TextInputType.number,false,FilteringTextInputFormatter.digitsOnly (p0) {},
TextInputType.number,
false,
FilteringTextInputFormatter
.digitsOnly,
null,
null,
TextInputAction.done
), ),
), ),
], ],
...@@ -486,14 +525,23 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -486,14 +525,23 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap: editProvider.submitLoading?null:() { onTap:
editProvider.submitLoading = true; editProvider.submitLoading
final updatedData = editProvider.getFormDataUpdate(); ? null
print(updatedData); : () {
final insertedData = editProvider.getFormData(); editProvider.submitLoading = true;
print(insertedData); final updatedData = editProvider.getFormDataUpdate();
editProvider.editPaymentDetailsAdjustedOrdersUpdateAPIFunction(context, widget.values["payment_id"], updatedData, insertedData); print(updatedData);
}, final insertedData = editProvider.getFormData();
print(insertedData);
editProvider
.editPaymentDetailsAdjustedOrdersUpdateAPIFunction(
context,
widget.values["payment_id"],
updatedData,
insertedData,
);
},
child: Container( child: Container(
height: 45, height: 45,
alignment: Alignment.center, alignment: Alignment.center,
...@@ -503,16 +551,21 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -503,16 +551,21 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
color: AppColors.app_blue, color: AppColors.app_blue,
borderRadius: BorderRadius.circular(15), borderRadius: BorderRadius.circular(15),
), ),
child:editProvider.submitLoading?CircularProgressIndicator.adaptive( child:
valueColor: AlwaysStoppedAnimation(AppColors.app_blue), editProvider.submitLoading
): Text( ? CircularProgressIndicator.adaptive(
"Submit", valueColor: AlwaysStoppedAnimation(
style: TextStyle( AppColors.app_blue,
fontSize: 15, ),
fontFamily: "JakartaMedium", )
color: Colors.white, : Text(
), "Submit",
), style: TextStyle(
fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
), ),
), ),
), ),
...@@ -524,6 +577,4 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> { ...@@ -524,6 +577,4 @@ class _EditadjustedorderlistState extends State<Editadjustedorderlist> {
}, },
); );
} }
} }
...@@ -26,6 +26,7 @@ class Editorderaccountdetails extends StatefulWidget { ...@@ -26,6 +26,7 @@ class Editorderaccountdetails extends StatefulWidget {
class _EditorderaccountdetailsState extends State<Editorderaccountdetails> { class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
FocusNode focusNodetpc = FocusNode(); FocusNode focusNodetpc = FocusNode();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode(),);
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void initState() { void initState() {
...@@ -39,6 +40,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> { ...@@ -39,6 +40,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
@override @override
void dispose() { void dispose() {
focusNodes.map((e)=>e.dispose());
super.dispose(); super.dispose();
} }
...@@ -237,6 +239,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> { ...@@ -237,6 +239,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[0],focusNodes[1],TextInputAction.next
), ),
errorWidget(context, provider.dispatchAddressError), errorWidget(context, provider.dispatchAddressError),
...@@ -248,6 +251,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> { ...@@ -248,6 +251,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.number, TextInputType.number,
false, false,
FilteringTextInputFormatter.digitsOnly, FilteringTextInputFormatter.digitsOnly,
focusNodes[1],focusNodes[2],TextInputAction.next
), ),
errorWidget(context, provider.dispatchPincodeError), errorWidget(context, provider.dispatchPincodeError),
textControllerWidget( textControllerWidget(
...@@ -258,6 +262,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> { ...@@ -258,6 +262,7 @@ class _EditorderaccountdetailsState extends State<Editorderaccountdetails> {
TextInputType.text, TextInputType.text,
false, false,
null, null,
focusNodes[2],focusNodes[3],TextInputAction.done
), ),
errorWidget(context, provider.noteError), errorWidget(context, provider.noteError),
......
...@@ -17,30 +17,34 @@ class Editpaymentdetailsbymode extends StatefulWidget { ...@@ -17,30 +17,34 @@ class Editpaymentdetailsbymode extends StatefulWidget {
final mode; final mode;
final pageTitleName; final pageTitleName;
final values; final values;
const Editpaymentdetailsbymode({super.key, this.mode, this.pageTitleName, this.values});
const Editpaymentdetailsbymode({
super.key,
this.mode,
this.pageTitleName,
this.values,
});
@override @override
State<Editpaymentdetailsbymode> createState() => _EditpaymentdetailsbymodeState(); State<Editpaymentdetailsbymode> createState() =>
_EditpaymentdetailsbymodeState();
} }
class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
Timer? _debounce; Timer? _debounce;
FocusNode focusNode = FocusNode(); FocusNode focusNode = FocusNode();
String? selectedValue; String? selectedValue;
final TextEditingController textEditingController = TextEditingController(); final TextEditingController textEditingController = TextEditingController();
List<FocusNode> focusNodes = List.generate(5, (index) => FocusNode());
Dropdowntheme ddtheme = Dropdowntheme(); Dropdowntheme ddtheme = Dropdowntheme();
@override @override
void initState() { void initState() {
// TODO: implement initState // TODO: implement initState
super.initState(); super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) { WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
var provider = Provider.of<Addpaymentprovider>( var provider = Provider.of<Addpaymentprovider>(context, listen: false);
context,
listen: false,
);
if (provider.dateNow == null) { if (provider.dateNow == null) {
provider.setDate(DateTime.now()); provider.setDate(DateTime.now());
} }
...@@ -60,13 +64,14 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -60,13 +64,14 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
provider.amountController.text = widget.values['amount']; provider.amountController.text = widget.values['amount'];
provider.selectedPaymentMode = widget.values['payment_mode']; provider.selectedPaymentMode = widget.values['payment_mode'];
provider.paymentRefController.text = widget.values['pay_ref']; provider.paymentRefController.text = widget.values['pay_ref'];
provider.paymentReceivedDateController.text = widget.values['pay_received_date']; provider.paymentReceivedDateController.text =
widget.values['pay_received_date'];
}); });
} }
@override @override
void dispose() { void dispose() {
focusNodes.map((e) => e.dispose());
super.dispose(); super.dispose();
} }
...@@ -77,14 +82,18 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -77,14 +82,18 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Consumer2<Addpaymentprovider,Editpaymentprovider>( return Consumer2<Addpaymentprovider, Editpaymentprovider>(
builder: (context, provider,editProvider, child) { builder: (context, provider, editProvider, child) {
return WillPopScope( return WillPopScope(
child: Scaffold( child: Scaffold(
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
backgroundColor: AppColors.white, backgroundColor: AppColors.white,
appBar: appbar2(context, "${widget.pageTitleName}",provider.resetForm,SizedBox(width: 0,)), appBar: appbar2(
context,
"${widget.pageTitleName}",
provider.resetForm,
SizedBox(width: 0),
),
body: Container( body: Container(
padding: EdgeInsets.symmetric(horizontal: 10), padding: EdgeInsets.symmetric(horizontal: 10),
decoration: BoxDecoration( decoration: BoxDecoration(
...@@ -114,20 +123,20 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -114,20 +123,20 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
], ],
), ),
items: items:
provider.description provider.description
.map( .map(
(pm) => DropdownMenuItem<String>( (pm) => DropdownMenuItem<String>(
value: pm, value: pm,
child: Text( child: Text(
pm, pm,
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
) )
.toList(), .toList(),
value: provider.selectedDescription, value: provider.selectedDescription,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
...@@ -152,7 +161,12 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -152,7 +161,12 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
provider.amountController, provider.amountController,
"Amount", "Amount",
provider.onChangeAmount, provider.onChangeAmount,
TextInputType.number,false,FilteringTextInputFormatter.digitsOnly TextInputType.number,
false,
FilteringTextInputFormatter.digitsOnly,
focusNodes[0],
null,
TextInputAction.done
), ),
errorWidget(context, provider.amountError), errorWidget(context, provider.amountError),
...@@ -175,20 +189,20 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -175,20 +189,20 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
], ],
), ),
items: items:
provider.paymentMode provider.paymentMode
.map( .map(
(pm) => DropdownMenuItem<String>( (pm) => DropdownMenuItem<String>(
value: pm, value: pm,
child: Text( child: Text(
pm, pm,
style: const TextStyle( style: const TextStyle(
fontSize: 14, fontSize: 14,
), ),
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
), ),
) )
.toList(), .toList(),
value: provider.selectedPaymentMode, value: provider.selectedPaymentMode,
onChanged: (value) { onChanged: (value) {
if (value != null) { if (value != null) {
...@@ -209,43 +223,50 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -209,43 +223,50 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
), ),
errorWidget(context, provider.paymentModeError), errorWidget(context, provider.paymentModeError),
textControllerWidget( textControllerWidget(
context, context,
provider.paymentRefController, provider.paymentRefController,
"Payment Reference No. / Cheque No. / UTR No. tf", "Payment Reference No. / Cheque No. / UTR No. tf",
provider.onChangepaymentRef,TextInputType.text,false,null provider.onChangepaymentRef,
TextInputType.text,
false,
null,
focusNodes[1],
null,
TextInputAction.done
), ),
errorWidget(context, provider.paymentRefError), errorWidget(context, provider.paymentRefError),
TextWidget(context, "Payment Received Date"), TextWidget(context, "Payment Received Date"),
GestureDetector( GestureDetector(
onTap: () { onTap: () {
provider.showDatePickerDialog(context); provider.showDatePickerDialog(context);
}, },
child: Row( child: Row(
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Expanded( Expanded(
child: Container( child: Container(
height: 50,
height: 50,
alignment: Alignment.center, alignment: Alignment.center,
decoration: BoxDecoration( decoration: BoxDecoration(
color: AppColors.text_field_color, color: AppColors.text_field_color,
borderRadius: BorderRadius.circular(14), borderRadius: BorderRadius.circular(14),
), ),
child: Padding( child: Padding(
padding: const EdgeInsets.fromLTRB(10.0, 0.0, 10, 0), padding: const EdgeInsets.fromLTRB(
10.0,
0.0,
10,
0,
),
child: TextFormField( child: TextFormField(
controller: provider.paymentReceivedDateController, controller:
provider.paymentReceivedDateController,
keyboardType: TextInputType.text, keyboardType: TextInputType.text,
enabled: false, enabled: false,
maxLines: 1, maxLines: 1,
readOnly: true, readOnly: true,
onChanged: (value) { onChanged: (value) {},
},
decoration: InputDecoration( decoration: InputDecoration(
hintText: "Enter Date", hintText: "Enter Date",
hintStyle: TextStyle( hintStyle: TextStyle(
...@@ -266,46 +287,52 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -266,46 +287,52 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
), ),
), ),
errorWidget(context, provider.dateError), errorWidget(context, provider.dateError),
], ],
), ),
), ),
), ),
floatingActionButtonLocation: floatingActionButtonLocation:
FloatingActionButtonLocation.centerFloat, FloatingActionButtonLocation.centerFloat,
bottomNavigationBar: InkResponse( bottomNavigationBar: InkResponse(
onTap: editProvider.submitLoading?null:() { onTap:
editProvider.submitLoading = true; editProvider.submitLoading
editProvider.editPaymentDetailsAPIFunction(context, widget.values["payment_id"], ? null
provider.selectedDescription, : () {
provider.selectedPaymentMode, editProvider.submitLoading = true;
provider.paymentRefController.text, editProvider.editPaymentDetailsAPIFunction(
provider.paymentReceivedDateController.text, context,
provider.amountController.text widget.values["payment_id"],
); provider.selectedDescription,
}, provider.selectedPaymentMode,
provider.paymentRefController.text,
provider.paymentReceivedDateController.text,
provider.amountController.text,
);
},
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:editProvider.submitLoading?CircularProgressIndicator.adaptive( child:
valueColor: AlwaysStoppedAnimation<Color>( editProvider.submitLoading
AppColors.white ? CircularProgressIndicator.adaptive(
)):Text( valueColor: AlwaysStoppedAnimation<Color>(
"Submit", AppColors.white,
style: TextStyle( ),
fontSize: 15, )
fontFamily: "JakartaMedium", : Text(
color: Colors.white, "Submit",
), style: TextStyle(
), fontSize: 15,
fontFamily: "JakartaMedium",
color: Colors.white,
),
),
), ),
), ),
), ),
...@@ -317,6 +344,4 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> { ...@@ -317,6 +344,4 @@ class _EditpaymentdetailsbymodeState extends State<Editpaymentdetailsbymode> {
}, },
); );
} }
} }
...@@ -2272,7 +2272,7 @@ class ApiCalling { ...@@ -2272,7 +2272,7 @@ class ApiCalling {
'tpc_agent_id': tpc_agent_id.toString(), 'tpc_agent_id': tpc_agent_id.toString(),
}; };
var res; var res;
print(data); print("add order:${data}");
if (po != null) { if (po != null) {
res = await postImageNew(data, {}, ordersAddOrderSubmitUrl, po, "po"); res = await postImageNew(data, {}, ordersAddOrderSubmitUrl, po, "po");
res = jsonDecode(res); res = jsonDecode(res);
......
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