From 0eef014073bfff70227dc7f264f1a6da3c972360 Mon Sep 17 00:00:00 2001 From: "snehalathad@aissel.com" Date: Mon, 27 May 2024 15:16:59 +0530 Subject: [PATCH] textfield issue fixes --- .../edit_interaction_screen.dart | 40 ++- .../interactionform/interaction_screen.dart | 300 ++++++++++-------- .../interactionform/interactionprovider.dart | 37 ++- .../view_interaction_screen.dart | 11 +- .../viewinteractionprovider.dart | 40 ++- .../widget/interatciontextfield.dart | 3 + 6 files changed, 254 insertions(+), 177 deletions(-) diff --git a/lib/ui_screen/interactionform/edit_interaction_screen.dart b/lib/ui_screen/interactionform/edit_interaction_screen.dart index 62fcbe3..3165873 100644 --- a/lib/ui_screen/interactionform/edit_interaction_screen.dart +++ b/lib/ui_screen/interactionform/edit_interaction_screen.dart @@ -473,26 +473,24 @@ class _EditInteractionScreenState extends State { }, ), ) - : Expanded( - child: Padding( - padding: const EdgeInsets.only(left: 8.0, right: 8.0), - child: SizedBox( - // width: isTablet ? 200 : MediaQuery.of(context).size.width, - width: MediaQuery.of(context).size.width, + : Padding( + padding: const EdgeInsets.only(left: 8.0, right: 8.0), + child: SizedBox( + // width: isTablet ? 200 : MediaQuery.of(context).size.width, + width: MediaQuery.of(context).size.width, - height: isTablet ? 50 : 40, - child: InteractionTextField( - maxchars: int.parse(sectionItem.chars ?? "0"), - controller: sectionItem.controller!, - inputType: sectionItem.input == "number" - ? TextInputType.number - : TextInputType.name, - labelText: sectionItem.name, - onChanged: (val) { - sectionItem.selectedValue = []; - provider.setTextValue(val, sectionItem, multiple); - }, - ), + height: isTablet ? 50 : 40, + child: InteractionTextField( + maxchars: int.parse(sectionItem.chars ?? "0"), + controller: sectionItem.controller!, + inputType: sectionItem.input == "number" + ? TextInputType.number + : TextInputType.name, + labelText: sectionItem.name, + onChanged: (val) { + sectionItem.selectedValue = []; + provider.setTextValue(val, sectionItem, multiple); + }, ), ), ); @@ -655,7 +653,7 @@ class _EditInteractionScreenState extends State { Widget customdropdown(SectionList sectionItem, ViewInteractionProvider provider, List list, bool multiple) { // sectionItem.value = ''; - print("%%%%${sectionItem.selectedValue!.last}"); + // print("%%%%${sectionItem.selectedValue!.last}"); if (list.isEmpty) { print("###list empty###"); list = []; @@ -1034,7 +1032,7 @@ class _EditInteractionScreenState extends State { ? provider.getData2(sectionItem) : []; - return Wrap(children: [ + return Wrap(runAlignment: WrapAlignment.spaceEvenly, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ diff --git a/lib/ui_screen/interactionform/interaction_screen.dart b/lib/ui_screen/interactionform/interaction_screen.dart index 2ea1517..844bed5 100644 --- a/lib/ui_screen/interactionform/interaction_screen.dart +++ b/lib/ui_screen/interactionform/interaction_screen.dart @@ -509,7 +509,7 @@ class _InteractionScreenState extends State { controller: sectionItem.controller!, labelText: sectionItem.name, onChanged: (val) { - sectionItem.selectedValue = []; + sectionItem.selectedValue!.clear(); provider.setTextValue(val, sectionItem, multiple); }, ), @@ -1059,156 +1059,178 @@ class _InteractionScreenState extends State { Orientation orientation, FormFieldData item, int listIndex) { + List items = []; + + for (var obj in sectionList) { + items.add(obj.name); + } + + Map count = {}; + for (var i in items) { + count[i] = (count[i] ?? 0) + 1; + } + print(count['delete']); + return Padding( padding: isTablet ? const EdgeInsets.only(left: 8.0) : const EdgeInsets.only(left: 12.0, right: 12.0), - child: GridView.count( - physics: const NeverScrollableScrollPhysics(), - crossAxisCount: context.responsive( - 1, // default - sm: 1, // small - md: 1, // medium - lg: sectionList.length == 1 ? 1 : 4, // large - xl: 5, // extra large screen - ), - mainAxisSpacing: sectionList.length == 1 || !isTablet ? 1 : 2, - shrinkWrap: true, - padding: EdgeInsets.zero, - childAspectRatio: sectionList.length == 1 || !isTablet - ? orientation == Orientation.landscape - ? 10 - : 4.2 - : 1.8, - children: List.generate( - sectionList.length, - (i) { - print(sectionList); - SectionList sectionItem = sectionList[i]; - dropdownvalue = sectionItem.widget == InteractionWidget.DROPDOWN - ? sectionItem.value ?? "Select" - : ' '; - List list = - sectionItem.widget == InteractionWidget.DROPDOWN || - sectionItem.widget == InteractionWidget.AUTOCOMPLETE || - sectionItem.widget == InteractionWidget.MULTISELECT - ? provider.getData2(sectionItem) - : []; - provider.checkboxlist = - sectionItem.widget == InteractionWidget.CHECKBOX - ? provider.getData2(sectionItem) - : []; + child: Card( + child: GridView.count( + physics: const NeverScrollableScrollPhysics(), + crossAxisCount: context.responsive( + 1, // default + sm: 1, // small + md: 2, // medium + lg: sectionList.length == 1 ? 1 : 4, // large + xl: 5, // extra large screen + ), + mainAxisSpacing: sectionList.length == 1 || !isTablet ? 1 : 2, + shrinkWrap: true, + padding: EdgeInsets.zero, + childAspectRatio: sectionList.length == 1 || !isTablet + ? orientation == Orientation.landscape + ? 10 + : 4.2 + : 3, + children: List.generate( + sectionList.length, + (i) { + print(sectionList); + SectionList sectionItem = sectionList[i]; + dropdownvalue = sectionItem.widget == InteractionWidget.DROPDOWN + ? sectionItem.value ?? "Select" + : ' '; + List list = sectionItem.widget == + InteractionWidget.DROPDOWN || + sectionItem.widget == InteractionWidget.AUTOCOMPLETE || + sectionItem.widget == InteractionWidget.MULTISELECT + ? provider.getData2(sectionItem) + : []; + provider.checkboxlist = + sectionItem.widget == InteractionWidget.CHECKBOX + ? provider.getData2(sectionItem) + : []; - return Wrap(children: [ - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - sectionItem.widget == InteractionWidget.BUTTON && - sectionItem.input == 'add' || - sectionItem.input == 'deletebtn' - ? const SizedBox.shrink() - : Text( - '${sectionItem.name}:*', - style: TextStyle( - color: Colors.orange.shade800, - fontSize: isTablet ? 18 : 14, + return Wrap(runAlignment: WrapAlignment.spaceEvenly, children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sectionItem.widget == InteractionWidget.BUTTON && + sectionItem.input == 'add' || + sectionItem.input == 'deletebtn' + ? const SizedBox.shrink() + : Text( + '${sectionItem.name}:*', + style: TextStyle( + color: Colors.orange.shade800, + fontSize: isTablet ? 18 : 14, + ), ), - ), - // const SizedBox( - // height: 15, - // ), - sectionItem.widget == InteractionWidget.BUTTON - ? sectionItem.input == 'chooseFile' - ? Row( - children: [ - CustomButton( - backgroundColor: const Color.fromARGB( - 255, 233, 229, 229), - onPressed: () async { - sectionItem.selectedValue = []; - sectionItem.extension = []; - sectionItem.fileName = []; - await getEncodedFile(sectionItem); - - setState(() {}); - }, - width: 120, - height: 40, - fontsize: 12, - textColor: Colors.black, - title: sectionItem.name), - const SizedBox( - width: 5, - ), - Text( - sectionItem.selectedValue!.isNotEmpty - ? sectionItem.selectedValue!.isNotEmpty - ? 'File uploaded' - : "Files Uploaded" - : 'No file uploaded', - style: TextStyle( - color: - sectionItem.selectedValue!.isNotEmpty - ? Colors.green - : Colors.red), - ), - ], - ) - : isTablet - ? IconButton( - onPressed: () { - provider.deleteMultipleRows( - sectionItem.gid!, - sectionList[i], - sectionName); - - setState(() {}); - }, - icon: const Icon( - Icons.cancel, - size: 30, - color: Color.fromARGB(255, 8, 39, 92), - ), - ) - : Padding( - padding: - const EdgeInsets.only(left: 3.0, top: 5), - child: CustomButton( + // const SizedBox( + // height: 15, + // ), + sectionItem.widget == InteractionWidget.BUTTON + ? sectionItem.input == 'chooseFile' + ? Row( + children: [ + CustomButton( backgroundColor: const Color.fromARGB( - 255, 233, 75, 75), - onPressed: () { - provider.deleteMultipleRows( - sectionItem.gid!, - sectionList[i], - sectionName); + 255, 233, 229, 229), + onPressed: () async { + sectionItem.selectedValue = []; + sectionItem.extension = []; + sectionItem.fileName = []; + await getEncodedFile(sectionItem); setState(() {}); }, - // width: 80, - // height: 30, - + width: 120, height: 40, - - // height: - // MediaQuery.of(context).size.height * - // 0.2, fontsize: 12, - textColor: Colors.white, - title: "Delete"), - ) - : returnWidget( - sectionItem: sectionItem, - item: item, - provider: provider, - list: list, - gridIndex: i, - listIndex: listIndex, - widgetData: sectionItem.widget!, - multiple: true), - ], - ), - ]); - }, + textColor: Colors.black, + title: sectionItem.name), + const SizedBox( + width: 5, + ), + Text( + sectionItem.selectedValue!.isNotEmpty + ? sectionItem.selectedValue!.isNotEmpty + ? 'File uploaded' + : "Files Uploaded" + : 'No file uploaded', + style: TextStyle( + color: sectionItem + .selectedValue!.isNotEmpty + ? Colors.green + : Colors.red), + ), + ], + ) + : isTablet + ? Row( + children: [ + Expanded( + // width: MediaQuery.of(context).size.width, + child: IconButton( + onPressed: () { + provider.deleteMultipleRows( + sectionItem.gid!, + sectionList[i], + sectionName); + + setState(() {}); + }, + icon: const Icon( + Icons.cancel, + size: 30, + color: + Color.fromARGB(255, 8, 39, 92), + ), + ), + ), + ], + ) + : Padding( + padding: const EdgeInsets.only( + left: 3.0, top: 5), + child: CustomButton( + backgroundColor: const Color.fromARGB( + 255, 233, 75, 75), + onPressed: () { + provider.deleteMultipleRows( + sectionItem.gid!, + sectionList[i], + sectionName); + + setState(() {}); + }, + // width: 80, + // height: 30, + + height: 40, + + // height: + // MediaQuery.of(context).size.height * + // 0.2, + fontsize: 12, + textColor: Colors.white, + title: "Delete"), + ) + : returnWidget( + sectionItem: sectionItem, + item: item, + provider: provider, + list: list, + gridIndex: i, + listIndex: listIndex, + widgetData: sectionItem.widget!, + multiple: true), + ], + ), + ]); + }, + ), ), ), ); diff --git a/lib/ui_screen/interactionform/interactionprovider.dart b/lib/ui_screen/interactionform/interactionprovider.dart index 1fbfafd..8ea75da 100644 --- a/lib/ui_screen/interactionform/interactionprovider.dart +++ b/lib/ui_screen/interactionform/interactionprovider.dart @@ -246,8 +246,8 @@ class InteractionProvider extends ChangeNotifier { int i = 0; for (var obj in interactionReponseList) { if (multiple && obj.multipleList != null) { - i = obj.multipleList! - .indexWhere((element) => element.id == sectionItem.id); + i = obj.multipleList!.indexWhere((element) => + element.id == sectionItem.id && element.gid == sectionItem.gid); if (i != -1) { obj.multipleList![i].value = value; obj.multipleList![i].selectedValue!.add(value); @@ -420,7 +420,7 @@ class InteractionProvider extends ChangeNotifier { List addList = []; int index = interactionReponseList .indexWhere((element) => element.sectionName == sectionName); - + var textEditingController = TextEditingController(); addList = interactionReponseList[index] .sectionList .map((e) => SectionList( @@ -450,6 +450,17 @@ class InteractionProvider extends ChangeNotifier { addList.add(delItem); + for (SectionList obj in addList) { + //obj.gid = obj.gid ?? addList.length; + if (obj.widget == InteractionWidget.TEXT) { + // multipletextEditingControllerList.clear(); + var textEditingController = TextEditingController(); + obj.controller = textEditingController; + multipletextEditingControllerList.add(textEditingController); + } + // newList.add(obj); + } + // if (interactionReponseList[index].multipleList!.isEmpty) { // newList = addList; // } else { @@ -466,13 +477,13 @@ class InteractionProvider extends ChangeNotifier { if (interactionReponseList[index].multipleList != null) { for (SectionList obj in interactionReponseList[index].multipleList!) { obj.gid = obj.gid ?? interactionReponseList[index].multipleList!.length; - if (obj.widget == InteractionWidget.TEXT) { - var textEditingController = TextEditingController(); + // if (obj.widget == InteractionWidget.TEXT) { + // var textEditingController = TextEditingController(); - multipletextEditingControllerList.add(textEditingController); - obj.controller = multipletextEditingControllerList.last; - } - // newList.add(obj); + // multipletextEditingControllerList.add(textEditingController); + // obj.controller = multipletextEditingControllerList.last; + // } + //newList.add(obj); } } @@ -525,6 +536,12 @@ class InteractionProvider extends ChangeNotifier { Future saveJsonObject(BuildContext context, String form, {bool isEdit = false}) async { print("form_data: $form"); + // for (var ob in interactionReponseList) { + + // for (var ob2 in ob.multipleList!) { + // debugPrint("!!!!!!!!!!!!In multiple :${ob2.selectedValue}"); + // } + // } List resultData = interactionReponseList .map((e) => FormFieldData( multipleList: e.multipleList == null @@ -541,7 +558,7 @@ class InteractionProvider extends ChangeNotifier { extension: mobj.extension, fileName: mobj.fileName, widget: mobj.widget, - // controller: mobj.controller, + // controller: mobj.controller, gid: mobj.gid, input: mobj.input, selectedId: mobj.selectedId, diff --git a/lib/ui_screen/interactionform/view_interaction_screen.dart b/lib/ui_screen/interactionform/view_interaction_screen.dart index a5f3a21..ac5c64b 100644 --- a/lib/ui_screen/interactionform/view_interaction_screen.dart +++ b/lib/ui_screen/interactionform/view_interaction_screen.dart @@ -286,8 +286,10 @@ class _ViewInteractionScreenState extends State { sectionItem.id, sectionItem.selectedValue!.last)); case InteractionWidget.AUTOCOMPLETE: - return Text(provider.getDataValue( - sectionItem.id, sectionItem.selectedValue!.last)); + return Text(sectionItem.selectedValue!.isNotEmpty + ? provider.getDataValue( + sectionItem.id, sectionItem.selectedValue!.last) + : " "); case InteractionWidget.MULTISELECT: return Text(sectionItem.selectedValue.toString()); @@ -320,6 +322,11 @@ class _ViewInteractionScreenState extends State { ? const Text("File Uploaded") : const Text(" ") : const Text(" "); + case InteractionWidget.DROPDOWN: + return Text(sectionItem.selectedValue!.isNotEmpty + ? provider.getDataValue( + sectionItem.id, sectionItem.selectedValue!.last) + : " "); default: return Text(sectionItem.selectedValue!.isNotEmpty ? provider.getDataValue( diff --git a/lib/ui_screen/interactionform/viewinteractionprovider.dart b/lib/ui_screen/interactionform/viewinteractionprovider.dart index 9f415c7..de38e3a 100644 --- a/lib/ui_screen/interactionform/viewinteractionprovider.dart +++ b/lib/ui_screen/interactionform/viewinteractionprovider.dart @@ -140,13 +140,22 @@ class ViewInteractionProvider extends ChangeNotifier { for (SectionList obj in item.multipleList!) { obj.gid = obj.gid ?? item.multipleList!.length; + if (obj.widget == InteractionWidget.TEXT) { + debugPrint("textcontr:${obj.gid}"); + debugPrint("textcontr:${obj.selectedValue}"); + // debugPrint("textcontr:${obj.controller!.value}"); var textEditingController = TextEditingController(); + textEditingController.value = TextEditingValue( + text: obj.selectedValue!.isNotEmpty + ? obj.selectedValue!.last ?? "" + : ""); textEditingController.text = obj.selectedValue!.isNotEmpty ? obj.selectedValue!.last ?? "" : ""; multipletextEditingControllerList.add(textEditingController); - obj.controller = multipletextEditingControllerList.last; + // obj.controller!.value = textEditingController.value; + obj.controller = textEditingController; // obj.controller = obj.selectedValue.last ?? " "; } if (obj.widget == InteractionWidget.DROPDOWN || @@ -608,6 +617,23 @@ class ViewInteractionProvider extends ChangeNotifier { // if (interactionReponseList[index].multipleList!.isEmpty) { // newList = addList; // } else { + + if (addList.isNotEmpty) { + for (SectionList obj in addList) { + // obj.gid = obj.gid ?? addList.length; + if (obj.widget == InteractionWidget.TEXT) { + var textEditingController = TextEditingController(); + + multipletextEditingControllerList.add(textEditingController); + obj.controller = multipletextEditingControllerList.last; + obj.controller!.text = + obj.selectedValue != null && obj.selectedValue!.isNotEmpty + ? obj.selectedValue!.last + : ''; + } + // newList.add(obj); + } + } if (interactionReponseList[index].multipleList == null) { interactionReponseList[index].multipleList = addList; } else { @@ -622,10 +648,6 @@ class ViewInteractionProvider extends ChangeNotifier { for (SectionList obj in interactionReponseList[index].multipleList!) { obj.gid = obj.gid ?? interactionReponseList[index].multipleList!.length; if (obj.widget == InteractionWidget.TEXT) { - var textEditingController = TextEditingController(); - - multipletextEditingControllerList.add(textEditingController); - obj.controller = multipletextEditingControllerList.last; obj.controller!.text = obj.selectedValue != null && obj.selectedValue!.isNotEmpty ? obj.selectedValue!.last @@ -653,6 +675,14 @@ class ViewInteractionProvider extends ChangeNotifier { saveJsonObject(BuildContext context, String form, SaveInteraction saveInteraction) async { + for (var res in interactionReponseList) { + for (var sec in res.sectionList) { + debugPrint("print ${sec.selectedValue}"); + } + for (var sec in res.multipleList!) { + debugPrint("printmultiple ${sec.selectedValue}"); + } + } List resultData = interactionReponseList .map((e) => FormFieldData( multipleList: e.multipleList == null diff --git a/lib/ui_screen/interactionform/widget/interatciontextfield.dart b/lib/ui_screen/interactionform/widget/interatciontextfield.dart index d957dd1..f4ff2c7 100644 --- a/lib/ui_screen/interactionform/widget/interatciontextfield.dart +++ b/lib/ui_screen/interactionform/widget/interatciontextfield.dart @@ -42,6 +42,9 @@ class InteractionTextField extends StatelessWidget { onChanged: (value) { onChanged(value); }, + onSubmitted: (value) { + onChanged(value); + }, inputFormatters: [ inputType == TextInputType.number ? FilteringTextInputFormatter.digitsOnly