import 'dart:convert'; import 'dart:io'; import 'package:discover_module/constants.dart'; import 'package:discover_module/ui_screen/add_event/add_hcp.dart'; import 'package:discover_module/ui_screen/interactionform/interactionprovider.dart'; import 'package:discover_module/ui_screen/interactionform/model/interaction_data.dart'; import 'package:discover_module/ui_screen/interactionform/util.dart'; import 'package:discover_module/ui_screen/interactionform/widget/custombutton.dart'; import 'package:discover_module/ui_screen/interactionform/widget/customrangeslider.dart'; import 'package:discover_module/ui_screen/interactionform/widget/interatciontextfield.dart'; import 'package:discover_module/ui_screen/interactionform/widget/responsive_ext.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:intl/intl.dart'; import 'package:path_provider/path_provider.dart'; import 'package:popover/popover.dart'; import 'package:provider/provider.dart'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:file_picker/file_picker.dart'; // import 'package:pwa_ios/widgets/responsive_ext.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:path/path.dart' as p; //import 'package:carousel_slider/carousel_slider.dart'; import 'package:flutter_carousel_widget/flutter_carousel_widget.dart'; // import 'package:popover/popover.dart'; class InteractionScreen1 extends StatefulWidget { int index; String form; InteractionScreen1({super.key, required this.index, required this.form}); @override State createState() => _InteractionScreen1State(); } class _InteractionScreen1State extends State { List interactionReponseList = []; List sectionList = []; List textEditingControllerList = []; int textfieldIndex = 0; String dropdownvalue = 'Select value'; String? fileName; final TextEditingController textEditingController = TextEditingController(); bool _isExpanded = false; late int _value; var list; var item1; final GlobalKey _formKey = GlobalKey(); int _currentPage = 0; late int _totalPages = Provider.of(context, listen: false) .interactionReponseList .length; @override void initState() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) { // if (mytimer!.isActive) { // cancelTimer(); // } init(); }); super.initState(); } init() async { await Provider.of(context, listen: false) .init(widget.index); setState(() {}); } // @override // Widget build(BuildContext context) { // return Consumer( // builder: (BuildContext context, provider, Widget? child) { // return GestureDetector( // onTap: () { // FocusScope.of(context).requestFocus(FocusNode()); // }, // child: OrientationBuilder(builder: (context, orientation) { // return SafeArea( // child: Scaffold( // //resizeToAvoidBottomInset: false, // appBar: AppBar( // title: const FittedBox( // fit: BoxFit.scaleDown, // child: Text( // 'Record New Interaction', // style: TextStyle( // // fontSize: isTablet ? 22 : 14, color: Colors.white // // fontSize: 20, // color: Colors.white), // ), // ), // // backgroundColor: const Color(0xFF2b9af3), // automaticallyImplyLeading: false, // actions: [saveActions(provider)], // leading: InkWell( // onTap: () { // Navigator.pop(context); // }, // child: const Icon( // Icons.arrow_back_ios, // color: Colors.white, // ), // ), // ), // body: Column( // mainAxisSize: MainAxisSize.min, // children: [ // Expanded( // child: ListView.builder( // itemCount: provider.interactionReponseList.length, // cacheExtent: double.parse( // provider.interactionReponseList.length.toString()), // itemBuilder: (context, index) { // var item = provider.interactionReponseList[index]; // sectionList = item.sectionList; // return Column( // children: [ // Card( // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.circular(0.0), // ), // elevation: 5, // color: Constants.k2color, // child: ExpansionTile( // maintainState: true, // backgroundColor: Constants.k2color, // onExpansionChanged: (bool expanded) { // setState(() { // _isExpanded = expanded; // }); // }, // trailing: Icon( // _isExpanded // ? Icons.keyboard_arrow_up // : Icons.keyboard_arrow_down, // color: Colors.white), // // collapsedBackgroundColor: Color(0xFF2b9af3), // initiallyExpanded: true, // title: // // Stack( // // alignment: AlignmentDirectional.center, // // children: [Contact Module Mobile app Filter section api issue Pooja p1 in-progress // Text( // item.sectionName, // style: const TextStyle( // color: Colors.white, // fontWeight: FontWeight.normal, // // fontSize: isTablet ? 18 : 14 // ), // ), // children: [ // Container( // color: Colors.white, // child: Padding( // padding: // const EdgeInsets.only(top: 8.0), // child: Column( // mainAxisSize: MainAxisSize.min, // crossAxisAlignment: // CrossAxisAlignment.center, // children: [ // GridView.count( // physics: // const NeverScrollableScrollPhysics(), // crossAxisCount: // context.responsive( // 1, // sm: 1, // small // md: isTablet // ? 2 // : orientation == // Orientation // .landscape // ? 2 // : 1, // medium // lg: sectionList.length == 1 // ? 1 // : 3, // large // xl: 3, // extra large screen // ), // mainAxisSpacing: // sectionList.length == 1 || // !isTablet // ? 1 // : 3.5, // // mainAxisSpacing: // // orientation == Orientation.portrait // // ? 1 // // : 3, // shrinkWrap: true, // padding: EdgeInsets.zero, // childAspectRatio: // sectionList.length == 1 // ? orientation == // Orientation // .landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.5, // children: List.generate( // sectionList.length, // (i) { // SectionList sectionItem = // sectionList[i]; // dropdownvalue = // sectionItem.widget == // InteractionWidget // .DROPDOWN // ? sectionItem.value ?? // "Select" // : ' '; // List< // InputClass> 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 Column( // //mainAxisSize: MainAxisSize.min, // crossAxisAlignment: // CrossAxisAlignment // .start, // children: [ // sectionItem.widget == // InteractionWidget // .BUTTON && // sectionItem // .input == // 'add' // ? const SizedBox // .shrink() // : Padding( // padding: // const EdgeInsets // .only( // left: 8.0, // right: // 8.0), // child: FittedBox( // fit: BoxFit // .scaleDown, // child: Text( // sectionItem // .validation! // .isRequired // ? '${sectionItem.name}:*' // : '${sectionItem.name}:', // style: // TextStyle( // color: Colors // .orange // .shade800, // fontSize: // 18.0, // // fontSize: isTablet // // ? 18 // // : 12, // ), // ), // ), // ), // returnWidget( // sectionItem: // sectionItem, // item: item, // provider: provider, // list: list, // gridIndex: i, // listIndex: index, // widgetData: // sectionItem // .widget!, // multiple: false), // ], // ); // }, // ), // ), // // SizedBox( // // height: isTablet ? 15 : 5, // // ), // item.multiple // ? gridViewWidget( // provider, // item.sectionName, // item.multipleList ?? [], // orientation, // item, // index) // : const SizedBox.shrink(), // provider.interactionReponseList // .length == // index - 1 // ? saveActions(provider) // : const SizedBox.shrink() // //const Spacer(), // ], // ), // ), // ), // ]), // ), // ], // ); // }, // ), // ), // // const Spacer(), // //saveActions(provider), // Align( // alignment: Alignment.bottomRight, // child: Container( // height: 80.0, // width: 80.0, // //child: // // Text(provider.interactionReponseList.toString()))) // child: _offsetPopup(provider.interactionReponseList))) // ], // ), // ), // ); // }), // ); // }); // } final CarouselController _controller = CarouselController(); @override Widget build(BuildContext context) { return Consumer( builder: (BuildContext context, provider, Widget? child) { return GestureDetector( onTap: () { FocusScope.of(context).requestFocus(FocusNode()); }, child: OrientationBuilder(builder: (context, orientation) { return SafeArea( child: Scaffold( backgroundColor: Colors.white, appBar: AppBar( title: const FittedBox( fit: BoxFit.scaleDown, child: Text( 'Record New Interaction', style: TextStyle(color: Colors.white, fontSize: 18.0), ), ), automaticallyImplyLeading: false, //actions: [saveActions(provider)], leading: InkWell( onTap: () { Navigator.pop(context); }, child: const Icon( Icons.arrow_back_ios, color: Colors.white, ), ), ), body: Column( children: [ Expanded( child: // ListView.builder( // itemCount: provider.interactionReponseList.length, // cacheExtent: double.parse(provider // .interactionReponseList.length // .toString()), // itemBuilder: (context, index) { // var item = provider.interactionReponseList[index]; // sectionList = item.sectionList; // print("Section_ListttPooja: $sectionList"); FlutterCarousel( options: CarouselOptions( onPageChanged: (index, reason) { setState(() { _currentPage = index; }); // Example: Perform actions when reaching the last page // if (_currentPage == _totalPages - 1) { // print('Reached the last page!'); // // Add your actions here // } }, controller: _controller, height: MediaQuery.of(context) .size .height, // Adjust as needed // aspectRatio: 16 / 9, // Optional aspect ratio adjustment //viewportFraction: 0.9, viewportFraction: 1.0, initialPage: 0, enableInfiniteScroll: false, reverse: false, autoPlay: false, autoPlayInterval: Duration(seconds: 3), autoPlayAnimationDuration: Duration(milliseconds: 800), autoPlayCurve: Curves.fastOutSlowIn, enlargeCenterPage: false, disableCenter: false, showIndicator: true, scrollDirection: Axis.horizontal, slideIndicator: CircularWaveSlideIndicator( alignment: Alignment.bottomCenter, currentIndicatorColor: Constants.k2color, indicatorBackgroundColor: Colors.grey), ), items: provider.interactionReponseList.map((item) { sectionList = item.sectionList; print("Item_sectionListt11: ${item.sectionName}"); print("Item_sectionListt: ${item.sectionList}"); // provider.interactionReponseList[index] // .map((item) { return ListView( children: [ ColoredBox( color: Colors.white, child: // ExpansionTile( // maintainState: true, // // backgroundColor: Constants.k2color, // onExpansionChanged: (bool expanded) { // setState(() { // _isExpanded = expanded; // }); // }, // trailing: Icon( // _isExpanded // ? Icons.keyboard_arrow_up // : Icons.keyboard_arrow_down, // color: Colors.white), // // collapsedBackgroundColor: Color(0xFF2b9af3), // initiallyExpanded: true, // title: Padding( padding: const EdgeInsets.all(8.0), child: Text( item.sectionName, textAlign: TextAlign.center, style: const TextStyle( color: Colors.black, fontSize: 18.0, fontWeight: FontWeight.bold, // fontSize: isTablet ? 18 : 14 ), ), ), // children: [], // ), ), Container( color: Colors.white, child: Column( mainAxisSize: MainAxisSize.min, children: [ ColoredBox( color: Colors.white, child: Padding( padding: const EdgeInsets.only(top: 5.0), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.center, children: [ GridView.count( physics: const NeverScrollableScrollPhysics(), crossAxisCount: context.responsive( 1, sm: 1, // small md: isTablet ? 2 : orientation == Orientation.landscape ? 2 : 1, // medium lg: sectionList.length == 1 ? 1 : 3, // large xl: 3, // extra large screen ), // mainAxisSpacing: // sectionList.length == 1 || // !isTablet // ? 1.8 // : 3.5, mainAxisSpacing: sectionList.length == 1 || !isTablet ? 1.8 : 3.5, // mainAxisSpacing: // orientation == Orientation.portrait // ? 1 // : 3, shrinkWrap: true, padding: EdgeInsets.zero, // childAspectRatio: // sectionList.length == 1 // ? orientation == // Orientation.landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.0, // childAspectRatio: // sectionList.length == 1 // ? orientation == // Orientation // .landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.5, childAspectRatio: sectionList.length == 1 ? orientation == Orientation .landscape ? 10 : 4.8 : isTablet ? 2.8 : 4.5, children: List.generate( sectionList.length, (i) { SectionList sectionItem = sectionList[i]; dropdownvalue = sectionItem.widget == InteractionWidget .DROPDOWN ? sectionItem.value ?? "Select" : ' '; List< InputClass> 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 Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ sectionItem.widget == InteractionWidget .BUTTON && sectionItem.input == 'add' ? const SizedBox .shrink() : Padding( padding: const EdgeInsets .only( left: 8.0, right: 8.0), child: FittedBox( fit: BoxFit .scaleDown, child: Text( sectionItem .validation! .isRequired ? '${sectionItem.name}:*' : '${sectionItem.name}:', style: TextStyle( // color: Colors // .orange // .shade800, color: Constants .k2color, fontSize: 14.0, // fontSize: isTablet // ? 18 // : 12, ), ), ), ), returnWidget( sectionItem: sectionItem, item: item, provider: provider, list: list, gridIndex: i, listIndex: 0, widgetData: sectionItem.widget!, multiple: false), ], ); }, ), ), // SizedBox( // height: isTablet ? 15 : 5, // ), item.multiple ? gridViewWidget( provider, item.sectionName, item.multipleList ?? [], orientation, item, 0) : const SizedBox.shrink(), provider.interactionReponseList .length == 0 - 1 ? saveActions(provider) : const SizedBox.shrink(), // Add your actions here //const Spacer(), ], ), ), ), ], ), ), item.multiple ? Container( color: Colors.white, child: Align( alignment: Alignment.center, child: Padding( padding: const EdgeInsets.only(bottom: 18.0), child: OutlinedButton( onPressed: () { provider.getSectionItem( item.sectionName, ); }, child: Text( 'Add More', style: TextStyle( color: Constants.k2color), ), style: OutlinedButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), ), ), ), ) : SizedBox.shrink(), _currentPage == _totalPages - 1 ? Container( color: Colors.white, child: Align( alignment: Alignment.center, child: Padding( padding: const EdgeInsets.only(bottom: 18.0), child: OutlinedButton( // onPressed: () {}, onPressed: () async { String record = await provider.saveJsonObject( context, widget.form); print( "Validation_isss: ${provider.isLoading}"); if (provider.isLoading == false) { print("Validation_false"); showAlertDialog1(context, "Please fill all the fields"); } else { showAlertDialog(context, "Form $record Saved Successfully!"); print("Validation_True"); } }, child: Text( 'Submit', style: TextStyle( color: Constants.k2color), ), style: OutlinedButton.styleFrom( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(12), ), ), ), ), ), ) : SizedBox.shrink(), ], ); }).toList(), ) //}), ), //const SizedBox(height: 16.0), Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Align( alignment: Alignment.bottomCenter, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Flexible( child: OutlinedButton( style: OutlinedButton.styleFrom( shape: CircleBorder()), onPressed: () { //if (_currentPageIndex > _totalPages - 1) _controller.previousPage(); }, child: Padding( padding: EdgeInsets.all(8.0), child: Icon( Icons.arrow_back, color: Constants.k2color, ), ), ), ), Flexible( child: OutlinedButton( style: OutlinedButton.styleFrom( shape: CircleBorder()), // onPressed: () { // _controller.nextPage( // duration: Duration(milliseconds: 300), // curve: Curves.ease, // ); // }, onPressed: () { _controller.nextPage( duration: Duration(milliseconds: 300), curve: Curves.ease, ); }, child: Padding( padding: EdgeInsets.all(8.0), child: Icon( Icons.arrow_forward, color: Constants.k2color, ), ), ), ), ], ), ), ), ], ), ), ); }), ); }, ); } // @override // Widget build(BuildContext context) { // return Consumer( // builder: (BuildContext context, provider, Widget? child) { // return GestureDetector( // onTap: () { // FocusScope.of(context).requestFocus(FocusNode()); // }, // child: OrientationBuilder(builder: (context, orientation) { // return SafeArea( // child: Scaffold( // appBar: AppBar( // title: const FittedBox( // fit: BoxFit.scaleDown, // child: Text( // 'Record New Interaction', // style: TextStyle(color: Colors.white), // ), // ), // automaticallyImplyLeading: false, // actions: [saveActions(provider)], // leading: InkWell( // onTap: () { // Navigator.pop(context); // }, // child: const Icon( // Icons.arrow_back_ios, // color: Colors.white, // ), // ), // ), // body: Column( // children: [ // Expanded( // child: CarouselSlider.builder( // itemCount: provider.interactionReponseList.length, // options: CarouselOptions( // height: MediaQuery.of(context) // .size // .height, // Adjust as needed // aspectRatio: // 16 / 9, // Optional aspect ratio adjustment // viewportFraction: 0.9, // initialPage: 0, // enableInfiniteScroll: false, // reverse: false, // autoPlay: false, // autoPlayInterval: Duration(seconds: 3), // autoPlayAnimationDuration: // Duration(milliseconds: 800), // autoPlayCurve: Curves.fastOutSlowIn, // enlargeCenterPage: true, // scrollDirection: Axis.horizontal, // ), // itemBuilder: // (BuildContext context, int index, int realIndex) { // var item = provider.interactionReponseList[index]; // sectionList = item.sectionList; // return Card( // shape: RoundedRectangleBorder( // borderRadius: BorderRadius.circular(0.0), // ), // elevation: 5, // color: Constants.k2color, // child: Text("pooja ${index}"), // // ExpansionTile( // // maintainState: true, // // backgroundColor: Constants.k2color, // // onExpansionChanged: (bool expanded) { // // setState(() { // // _isExpanded = expanded; // // }); // // }, // // trailing: Icon( // // _isExpanded // // ? Icons.keyboard_arrow_up // // : Icons.keyboard_arrow_down, // // color: Colors.white, // // ), // // initiallyExpanded: true, // // title: Text( // // item.sectionName, // // style: const TextStyle( // // color: Colors.white, // // fontWeight: FontWeight.normal, // // ), // // ), // // children: [ // // Container( // // color: Colors.white, // // child: Padding( // // padding: const EdgeInsets.only(top: 8.0), // // child: Column( // // mainAxisSize: MainAxisSize.min, // // crossAxisAlignment: // // CrossAxisAlignment.center, // // children: [ // // GridView.count( // // physics: // // const NeverScrollableScrollPhysics(), // // crossAxisCount: // // context.responsive( // // 1, // // sm: 1, // small // // md: isTablet // // ? 2 // // : orientation == // // Orientation.landscape // // ? 2 // // : 1, // medium // // lg: sectionList.length == 1 // // ? 1 // // : 3, // large // // xl: 3, // extra large screen // // ), // // mainAxisSpacing: // // sectionList.length == 1 || // // !isTablet // // ? 1 // // : 3.5, // // childAspectRatio: // // sectionList.length == 1 // // ? orientation == // // Orientation.landscape // // ? 10 // // : 4.8 // // : isTablet // // ? 2.8 // // : 3.5, // // children: List.generate( // // sectionList.length, // // (i) { // // SectionList sectionItem = // // sectionList[i]; // // // Your existing code for building widgets inside the GridView // // return returnWidget( // // sectionItem: sectionItem, // // item: item, // // provider: provider, // // list: list, // // gridIndex: i, // // listIndex: index, // // widgetData: // // sectionItem.widget!, // // multiple: false); // // }, // // ), // // ), // // // Other widgets inside the ExpansionTile's children // // ], // // ), // // ), // // ), // // ], // // ), // // ); // ); // }, // ), // ), // Align( // alignment: Alignment.bottomRight, // child: Container( // height: 80.0, // width: 80.0, // child: _offsetPopup(provider.interactionReponseList), // ), // ), // ], // ), // ), // ); // }), // ); // }, // ); // } Widget returnWidget({ required SectionList sectionItem, required FormFieldData item, required InteractionProvider provider, required List list, required int gridIndex, required int listIndex, required InteractionWidget widgetData, required bool multiple, }) { switch (widgetData) { case InteractionWidget.CHECKBOX: return (sectionItem.inputList!.length >= 5) ? customMultiselectDropdown( sectionItem, provider, sectionItem.inputList!, multiple) : buildCheckbox(sectionItem, item.sectionName, provider, multiple); case InteractionWidget.AUTOCOMPLETE: return customAutoCompletedropdown( sectionItem, provider, list, multiple); case InteractionWidget.MULTISELECT: return customMultiselectDropdown(sectionItem, provider, list, multiple); case InteractionWidget.RADIO: return (sectionItem.inputList!.length >= 5) ? customdropdown( sectionItem, provider, sectionItem.inputList!, multiple) : buildRadio(sectionItem, provider); case InteractionWidget.LABEL: return Text(sectionItem.input!); case InteractionWidget.RANGESLIDER: return CustomRangeSlider( max: double.parse(sectionItem.max!), min: double.parse(sectionItem.min!), sliderPos: sectionItem.selectedValue!.isNotEmpty ? double.parse(sectionItem.selectedValue!.last.toString()) : double.parse(sectionItem.min!), onChanged: (val) { setState(() { sectionItem.selectedValue = []; sectionItem.selectedId = val.toString(); sectionItem.selectedValue!.add(val.toInt()); }); }, ); case InteractionWidget.BUTTON: return sectionItem.input == 'add' ? const Offstage( offstage: true, child: Text("Visible"), ) : 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!.length > 1 ? 'Files uploaded' : "File Uploaded" : 'No file uploaded', style: TextStyle( color: sectionItem.selectedValue!.isNotEmpty ? Colors.green : Colors.red), ), ], ); case InteractionWidget.TEXT: return sectionItem.input == 'Date' ? buildDateWidget(sectionItem) : sectionItem.input == "textArea" ? Expanded( child: Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: InteractionTextField( // maxchars: int.parse(sectionItem.validation!.chars ?? "0"), controller: sectionItem.controller!, labelText: sectionItem.name, // maxlines: 8, //minlines: 4, onChanged: (val) { sectionItem.selectedValue = []; setState(() {}); sectionItem.selectedValue!.add(val); }, ), ), ) ////Poojaaaaa : sectionItem.input == "text1" ? Text( sectionItem.depid!, style: TextStyle( fontSize: 18.0, fontWeight: FontWeight.normal), ) : Expanded( child: Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: // isTablet ? 200 : MediaQuery.of(context).size.width, //height: isTablet ? 50 : 40, width: MediaQuery.of(context).size.width, height: isTablet ? 50 : 40, child: InteractionTextField( inputType: sectionItem.input == "number" ? TextInputType.number : TextInputType.name, maxchars: int.parse(sectionItem.chars ?? "0"), controller: sectionItem.controller!, labelText: sectionItem.name, onChanged: (val) { sectionItem.selectedValue = []; // sectionItem.selectedValue!.clear(); provider.setTextValue( val, sectionItem, multiple); }, ), ), ), ); case InteractionWidget.DROPDOWN: // return customdropdown(sectionItem, provider, list, multiple); return customAutoCompletedropdown( sectionItem, provider, list, multiple); } } Future requestPermission(Permission permission) async { final status = await permission.request(); setState(() { print(status); // _permissionStatus = status; // print(_permissionStatus); }); } Widget buildDateWidget(SectionList sectionItem) { return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: isTablet ? 200 : MediaQuery.of(context).size.width, // height: isTablet ? 50 : 40, width: MediaQuery.of(context).size.width, child: TextField( controller: sectionItem.controller, //editing controller of this TextField decoration: InputDecoration( // border: OutlineInputBorder(), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), labelStyle: const TextStyle(fontSize: 16), suffixIcon: const Icon(Icons.calendar_today), //icon of text field labelText: "Enter Date" //label text of field ), readOnly: true, //set it true, so that user will not able to edit text onTap: () async { DateTime? pickedDate = await showDatePicker( context: context, initialDate: DateTime.now(), firstDate: DateTime( 2000), //DateTime.now() - not to allow to choose before today. lastDate: DateTime(2101)); if (pickedDate != null) { print( pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000 String formattedDate = DateFormat('yyyy-MM-dd').format(pickedDate); print( formattedDate); //formatted date output using intl package => 2021-03-16 //you can implement different kind of Date Format here according to your requirement setState(() { sectionItem.controller!.text = formattedDate; sectionItem.selectedValue = []; sectionItem.selectedValue! .add(formattedDate); //set output date to TextField value. }); } else { print("Date is not selected"); } }, ), ), ); } Widget saveActions(InteractionProvider provider) { return Align( alignment: Alignment.centerRight, child: Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Padding( // padding: const EdgeInsets.all(4.0), padding: const EdgeInsets.only(top: 8.0, bottom: 8.0, right: 5.0), child: CustomButton( backgroundColor: Colors.red.shade800, onPressed: () { //showDeleteProfileAlertDialog(context); for (var textcontrollers in provider.textEditingControllerList) { textcontrollers.text = ''; } }, textColor: Colors.white, title: "Reset", // height: 40, // width: isTablet ? 100 : 80, height: MediaQuery.of(context).size.height * 0.2, // fontsize: isTablet ? 15 : 10.2, fontsize: isTablet ? 16 : 12, ), ), SizedBox( //width: isTablet ? 20 : 4, width: isTablet ? 20 : 2, ), Padding( // padding: const EdgeInsets.all(8.0), padding: const EdgeInsets.only(top: 8.0, bottom: 8.0), child: CustomButton( backgroundColor: Colors.green.shade500, onPressed: () async { String record = await provider.saveJsonObject(context, widget.form); print("Validation_isss: ${provider.isLoading}"); if (provider.isLoading == false) { print("Validation_false"); showAlertDialog1(context, "Please fill all the fields"); } else { showAlertDialog(context, "Form $record Saved Successfully!"); print("Validation_True"); } }, textColor: Colors.white, title: "Save", // height: 40, // width: isTablet ? 100 : 80, height: MediaQuery.of(context).size.height * 0.2, // width: MediaQuery.of(context).size.width * 0.1, fontsize: isTablet ? 16 : 12, ), ), SizedBox( width: isTablet ? 20 : 2, ), ], ), ); } Widget buildRadio(SectionList sectionItem, InteractionProvider provider) { List list = provider.getData2(sectionItem); // .map((itemWord) => InputClass.fromJson(itemWord)) // .toList(); return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: isTablet ? 250 : MediaQuery.of(context).size.width, width: MediaQuery.of(context).size.width, child: Row( children: [ for (InputClass value in list) Row( children: [ Radio( value: value.name, activeColor: Colors.black, groupValue: provider.radioValue, onChanged: (String? value) { setState(() { print(value); provider.radioValue = value!; int index = list.indexWhere((element) => element.name == value); sectionItem.selectedValue!.add(list[index].id); }); }, ), Text(value.name), ], ), ], ), ), ); } Widget buildCheckbox(SectionList sectionItem, String sectionName, InteractionProvider provider, bool multiple) { return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: 250, width: MediaQuery.of(context).size.width, child: Row( children: [ for (var value in provider.checkboxlist) Row( children: [ FittedBox( fit: BoxFit.scaleDown, child: CheckboxListTile( dense: true, //contentPadding: const EdgeInsets.symmetric(vertical: 5), value: value.ischecked ?? false, activeColor: Colors.black, checkColor: Colors.white, onChanged: (bool? newvalue) { value.ischecked = newvalue!; provider.setcheckBoxValue(sectionItem, sectionName, newvalue, value.id, multiple); //setState(() {}); }, ), ), Text(value.name), ], ), ], ), ), ); } Widget customdropdown(SectionList sectionItem, InteractionProvider provider, List list, bool multiple) { // sectionItem.value = ''; if (list.isEmpty) { list = []; InputClass inputClass = InputClass(id: "no value", name: "Select ${sectionItem.name}"); list.add(inputClass); sectionItem.selectedObject = list[0]; } // InputClass selectedObj = list[0]; return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( width: MediaQuery.of(context).size.width, // height: isTablet ? 60 : 40, child: DropdownButtonFormField2( isExpanded: true, decoration: InputDecoration( // Add Horizontal padding using menuItemStyleData.padding so it matches // the menu padding when button's width is not specified. isDense: true, contentPadding: const EdgeInsets.symmetric(vertical: 5), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), // Add more decoration.. ), hint: Text( 'Select ${sectionItem.name}', style: const TextStyle(fontSize: 14), ), items: list .map((item) => DropdownMenuItem( value: item, child: Text( item.name, style: const TextStyle( fontSize: 14, ), ), )) .toList(), value: sectionItem.selectedObject ?? list[0], // // provider.getDropDownValue(sectionItem.value!, sectionItem, list) // sectionItem.value ?? list[0].name, validator: (value) { if (value == null) { return 'Please select ${sectionItem.name}'; } return null; }, onChanged: (value) { //Do something when selected item is changed. sectionItem.selectedObject = value!; sectionItem.value = value.id; provider.setDropDownValue(value.id, sectionItem, multiple); print("selected ${sectionItem.value}"); // setState(() {}); }, onSaved: (value) { sectionItem.selectedObject = value!; sectionItem.value = value.id; provider.setDropDownValue(value.id, sectionItem, multiple); // setState(() {}); }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.only(right: 8), ), iconStyleData: const IconStyleData( icon: Icon( Icons.arrow_drop_down, color: Colors.black45, ), iconSize: 24, ), dropdownStyleData: DropdownStyleData( decoration: BoxDecoration( borderRadius: BorderRadius.circular(10.0), ), ), menuItemStyleData: const MenuItemStyleData( padding: EdgeInsets.symmetric(horizontal: 16), ), ), ), ); } Widget customAutoCompletedropdown(SectionList sectionItem, InteractionProvider provider, List list, bool multiple) { list = sectionItem.inputList!; print("***Autocomplete list ${list[0].name}"); //} //InputClass selectedObj = list[0]; return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: isTablet ? 200 : MediaQuery.of(context).size.width, // height: isTablet ? 60 : 40, width: MediaQuery.of(context).size.width, child: DropdownButtonHideUnderline( child: DropdownButtonFormField2( isExpanded: true, decoration: InputDecoration( // Add Horizontal padding using menuItemStyleData.padding so it matches // the menu padding when button's width is not specified. isDense: true, contentPadding: const EdgeInsets.symmetric(vertical: 5), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), // Add more decoration.. ), hint: Text( 'Select Item', style: TextStyle( fontSize: 14, color: Theme.of(context).hintColor, ), ), items: list .map((item) => DropdownMenuItem( value: item, child: Text( item.name, style: const TextStyle( fontSize: 14, ), ), )) .toList(), value: sectionItem.selectedObject, onSaved: (value) { sectionItem.selectedObject = value!; provider.setAutoCompleteValue(value.id, sectionItem, multiple); sectionItem.value = value.name; }, onChanged: (value) { // setState(() { sectionItem.selectedObject = value!; provider.setAutoCompleteValue(value.id, sectionItem, multiple); sectionItem.value = value.name; // setState(() {}); //}); }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.symmetric(horizontal: 16), height: 40, width: 200, ), dropdownStyleData: const DropdownStyleData( maxHeight: 200, ), menuItemStyleData: const MenuItemStyleData( height: 40, ), dropdownSearchData: DropdownSearchData( searchController: textEditingController, searchInnerWidgetHeight: 50, searchInnerWidget: Container( height: 50, padding: const EdgeInsets.only( top: 8, bottom: 4, right: 8, left: 8, ), child: TextFormField( // expands: true, // maxLines: null, controller: textEditingController, decoration: InputDecoration( isDense: true, contentPadding: const EdgeInsets.symmetric( horizontal: 10, vertical: 18, ), hintText: 'Search for an item...', hintStyle: const TextStyle(fontSize: 12), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), ), ), ), searchMatchFn: (item, searchValue) { return item.value!.name.toString().contains(searchValue); }, ), //This to clear the search value when you close the menu onMenuStateChange: (isOpen) { if (!isOpen) { textEditingController.clear(); } }, ), ), ), ); } Widget customMultiselectDropdown(SectionList sectionItem, InteractionProvider provider, List list, bool multiple) { if (list.isEmpty) { list = sectionItem.inputList!; } InputClass selectedObj = list[0]; return Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: SizedBox( // width: isTablet ? 200 : MediaQuery.of(context).size.width, // height: isTablet ? 60 : 40, width: MediaQuery.of(context).size.width, // height: MediaQuery.of(context).size.height, child: DropdownButtonHideUnderline( child: DropdownButtonFormField2( isExpanded: true, decoration: InputDecoration( // Add Horizontal padding using menuItemStyleData.padding so it matches // the menu padding when button's width is not specified. isDense: true, contentPadding: const EdgeInsets.symmetric(vertical: 5), border: OutlineInputBorder( borderRadius: BorderRadius.circular(10.0), ), // Add more decoration.. ), hint: Text( 'Select Items', style: TextStyle( fontSize: 14, color: Theme.of(context).hintColor, ), ), items: list.map((item) { return DropdownMenuItem( value: item, //disable default onTap to avoid closing menu when selecting an item enabled: false, child: StatefulBuilder( builder: (context, menuSetState) { final isSelected = sectionItem.selectedValue!.contains(item.name); return InkWell( onTap: () { isSelected ? sectionItem.selectedValue!.remove(item.name) : sectionItem.selectedValue!.add(item.name); //This rebuilds the StatefulWidget to update the button's text setState(() {}); //This rebuilds the dropdownMenu Widget to update the check mark menuSetState(() {}); }, child: Container( height: double.infinity, padding: const EdgeInsets.symmetric(horizontal: 16.0), child: Row( children: [ if (isSelected) const Icon(Icons.check_box_outlined) else const Icon(Icons.check_box_outline_blank), const SizedBox(width: 16), Expanded( child: Text( item.name, style: const TextStyle( fontSize: 14, ), ), ), ], ), ), ); }, ), ); }).toList(), //Use last selected item as the current value so if we've limited menu height, it scroll to last item. value: selectedObj, // ? null // : provider.selectedItems.last, onChanged: (value) { selectedObj = value!; provider.setAutoCompleteValue(value.id, sectionItem, multiple); sectionItem.value = value.name; }, onSaved: (value) { selectedObj = value!; provider.setAutoCompleteValue(value.id, sectionItem, multiple); sectionItem.value = value.name; }, selectedItemBuilder: (context) { return list.map( (item) { return Container( alignment: AlignmentDirectional.center, child: Text( sectionItem.selectedValue!.join(', '), style: const TextStyle( fontSize: 14, overflow: TextOverflow.ellipsis, ), maxLines: 1, ), ); }, ).toList(); }, buttonStyleData: const ButtonStyleData( padding: EdgeInsets.only(left: 16, right: 8), height: 40, width: 140, ), menuItemStyleData: const MenuItemStyleData( height: 40, padding: EdgeInsets.zero, ), ), ), ), ); } Widget gridViewWidget( InteractionProvider provider, String sectionName, List sectionList, Orientation orientation, FormFieldData item, int listIndex) { print("ListInex: $listIndex"); print("sectionName: $sectionName"); print("sectionName: $sectionName"); print("gridsectionlost_is: $sectionList"); print("gridsectionlostleangth_is: ${sectionList.length}"); List pooja = sectionList; print("Pooja_isss: $pooja"); print("Pooja_leangth_isss: ${pooja.length}"); ////////////////////////////////////mycode/////////////////////////// List> convertedArray = []; print("Provider_leangth: ${item.sectionList.length}"); for (int i = 0; i < pooja.length; i += item.sectionList.length + 1) { print("poojaleangth: $pooja"); convertedArray.add(pooja.sublist(i, i + item.sectionList.length + 1)); } print("ConvertedArray.leangth: $convertedArray"); print("ConvertedArray.leangth: ${convertedArray.length}"); return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ for (var i = 0; i < convertedArray.length; i++) DecoratedBox( decoration: BoxDecoration( // border: Border.all(color: Colors.black), // borderRadius: BorderRadius.circular(10.0), color: i % 2 == 0 ? Color.fromARGB(133, 213, 241, 254) : Colors.white, ), child: GridView.builder( physics: const NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: context.responsive( 1, sm: 1, // small md: isTablet ? 2 : orientation == Orientation.landscape ? 2 : 1, // medium lg: sectionList.length == 1 ? 1 : 3, // large xl: 3, // extra large screen ), mainAxisSpacing: sectionList.length == 1 || !isTablet ? 1 : 1, // childAspectRatio: sectionList.length == 1 // ? orientation == Orientation.landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.7, childAspectRatio: sectionList.length == 1 ? orientation == Orientation.landscape ? 10 : 4.8 : isTablet ? 2.8 : 4.5, ), shrinkWrap: true, padding: EdgeInsets.zero, itemCount: convertedArray[i].length, itemBuilder: (context, index) { SectionList sectionItem = convertedArray[i][index]; 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 Padding( padding: const EdgeInsets.only(top: 12.0), child: Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ // sectionItem.widget == InteractionWidget.BUTTON && // sectionItem.input == 'add' || // sectionItem.input == 'deletebtn' // ? const SizedBox.shrink() // : Padding( padding: const EdgeInsets.only(left: 8.0, right: 8.0), child: FittedBox( fit: BoxFit.scaleDown, child: Text( sectionItem.validation!.isRequired ? "${sectionItem.name}*" : sectionItem.name, style: TextStyle( //color: Colors.orange.shade800, color: Constants.k2color, fontSize: 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: 8.0, right: 8.0), child: CustomButton( backgroundColor: const Color.fromARGB( 255, 233, 75, 75), onPressed: () { provider.deleteMultipleRows( sectionItem.gid!, sectionList[i], sectionName); setState(() {}); }, 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), ], ), ); }), ) ], ); //); } String fieldsValidation(InteractionProvider provider) { List secList = provider.sectionList .where((element) => element.validation!.isRequired = true) .toList(); if (secList.any((element) => element.selectedValue!.isEmpty)) { return 'Fields cannot be empty'; } return ''; } String textFieldsValidation(InteractionProvider provider) { return ''; } _displaySnackBar(String msg) { final snackBar = SnackBar( content: Text( msg, style: const TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold), )); ScaffoldMessenger.of(context).showSnackBar(snackBar); //scaffoldKeyLogin.currentState!.showSnackBar(snackBar); } Future getEncodedFile(SectionList sectionItem) async { String base64Image = ''; var status = Platform.isAndroid ? await Permission.manageExternalStorage.status : await Permission.storage.status; if (status.isGranted) { FilePickerResult? result = await FilePicker.platform.pickFiles(allowMultiple: true); if (result != null) { print(result.files.first.path); print(result.files.last.path); for (var files in result.files) { File file = File(files.path!); print("check file path : ${file.path}"); fileName = file.path.split('/').last; // Get the application folder directory Directory? directory = Platform.isAndroid ? await getExternalStorageDirectory() //FOR ANDROID : await getApplicationDocumentsDirectory(); String newPath = ""; //FOR ios String convertedDirectoryPath = (directory?.path).toString(); print("see the converted directory path $convertedDirectoryPath"); newPath = "$convertedDirectoryPath/konectar/files"; print("new path :$newPath"); directory = Directory(newPath); if (!await directory.exists()) { await directory.create(recursive: true); } File newFile = await file.copy('${directory.path}/$fileName'); print("new path is ${newFile.path}"); final extension = p.extension(newFile.path); List imageBytes = await newFile.readAsBytes(); Uint8List imageUint8List = Uint8List.fromList(imageBytes); base64Image = base64Encode(imageUint8List); sectionItem.selectedValue!.add(base64Image); sectionItem.extension!.add(extension); sectionItem.fileName!.add(fileName); } } } else { print("not permitted"); await requestPermission(Platform.isAndroid ? Permission.manageExternalStorage : Permission.storage); } } showAlertDialog(BuildContext context, String record) { Widget cancelButton = TextButton( child: const Text("Ok"), onPressed: () async { Navigator.of(context).pop(); Navigator.of(context).pop(); }, ); // set up the AlertDialog AlertDialog alert = AlertDialog( title: const Text(""), content: Text(record), actions: [ cancelButton, ], ); // show the dialog showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } showAlertDialog1(BuildContext context, String record) { Widget cancelButton = TextButton( child: const Text("Ok"), onPressed: () async { Navigator.of(context).pop(); }, ); // set up the AlertDialog AlertDialog alert = AlertDialog( title: const Text(""), content: Text(record), actions: [ cancelButton, ], ); // show the dialog showDialog( context: context, builder: (BuildContext context) { return alert; }, ); } Widget _offsetPopup(List interactionReponseList) { List trueElements = interactionReponseList.where((element) => element.multiple).toList(); print("trueElements_iss: $trueElements"); return PopupMenuButton( onSelected: (newValue) { var provider = Provider.of(context, listen: false); setState(() { _value = newValue; // it gives the value which is selected var item = trueElements[_value]; provider.getSectionItem( item.sectionName, ); }); print("Clicked Section111 $_value "); // add this property print( "interactionReponseList1 ${interactionReponseList} "); // add this property }, itemBuilder: (context) { return List.generate(trueElements.length, (index) { var provider = Provider.of(context, listen: false); var item = trueElements[index]; print("itemitemitemitem_isss: ${item.multiple}"); return PopupMenuItem( value: index, child: item.multiple == true ? GestureDetector( onTap: () { print("Clicked Section ${item.sectionName}"); // provider.getSectionItem( // item.sectionName, // ); //print("Clicked Section : ${sectionList}") setState(() { provider.getSectionItem( item.sectionName, ); }); const DecoratedBox( decoration: BoxDecoration( // border: Border.all(color: Colors.black), // borderRadius: BorderRadius.circular(10.0), border: Border( bottom: BorderSide(width: 1.5, color: Colors.black), //top: BorderSide(width: 1.5, color: Colors.black), ), ), ); }, child: item.multiple == true ? Text(' ${item.sectionName}') : const SizedBox.shrink()) : SizedBox.shrink(), ); }); }, icon: Container( height: double.infinity, width: double.infinity, decoration: const ShapeDecoration( color: Color.fromARGB(255, 8, 39, 92), shape: StadiumBorder( side: BorderSide(color: Colors.white, width: 2), ), ), child: Icon(Icons.add, color: Colors.white), )); } } // import 'dart:convert'; // import 'dart:io'; // import 'package:discover_module/constants.dart'; // import 'package:discover_module/ui_screen/add_event/add_hcp.dart'; // import 'package:discover_module/ui_screen/interactionform/interactionprovider.dart'; // import 'package:discover_module/ui_screen/interactionform/model/interaction_data.dart'; // import 'package:discover_module/ui_screen/interactionform/util.dart'; // import 'package:discover_module/ui_screen/interactionform/widget/custombutton.dart'; // import 'package:discover_module/ui_screen/interactionform/widget/customrangeslider.dart'; // import 'package:discover_module/ui_screen/interactionform/widget/interatciontextfield.dart'; // import 'package:discover_module/ui_screen/interactionform/widget/responsive_ext.dart'; // import 'package:flutter/cupertino.dart'; // import 'package:flutter/material.dart'; // import 'package:flutter/rendering.dart'; // import 'package:flutter/services.dart'; // import 'package:flutter/widgets.dart'; // import 'package:intl/intl.dart'; // import 'package:path_provider/path_provider.dart'; // import 'package:popover/popover.dart'; // import 'package:provider/provider.dart'; // import 'package:dropdown_button2/dropdown_button2.dart'; // import 'package:file_picker/file_picker.dart'; // // import 'package:pwa_ios/widgets/responsive_ext.dart'; // import 'package:permission_handler/permission_handler.dart'; // import 'package:path/path.dart' as p; // //import 'package:carousel_slider/carousel_slider.dart'; // import 'package:flutter_carousel_widget/flutter_carousel_widget.dart'; // // import 'package:popover/popover.dart'; // class InteractionScreen1 extends StatefulWidget { // int index; // String form; // InteractionScreen1({super.key, required this.index, required this.form}); // @override // State createState() => _InteractionScreen1State(); // } // class _InteractionScreen1State extends State { // List interactionReponseList = []; // List sectionList = []; // List textEditingControllerList = []; // int textfieldIndex = 0; // String dropdownvalue = 'Select value'; // String? fileName; // final TextEditingController textEditingController = TextEditingController(); // bool _isExpanded = false; // late int _value; // var list; // var item1; // @override // void initState() { // WidgetsBinding.instance.addPostFrameCallback((timeStamp) { // // if (mytimer!.isActive) { // // cancelTimer(); // // } // init(); // }); // super.initState(); // } // init() async { // await Provider.of(context, listen: false) // .init(widget.index); // setState(() {}); // } // // @override // // Widget build(BuildContext context) { // // return Consumer( // // builder: (BuildContext context, provider, Widget? child) { // // return GestureDetector( // // onTap: () { // // FocusScope.of(context).requestFocus(FocusNode()); // // }, // // child: OrientationBuilder(builder: (context, orientation) { // // return SafeArea( // // child: Scaffold( // // //resizeToAvoidBottomInset: false, // // appBar: AppBar( // // title: const FittedBox( // // fit: BoxFit.scaleDown, // // child: Text( // // 'Record New Interaction', // // style: TextStyle( // // // fontSize: isTablet ? 22 : 14, color: Colors.white // // // fontSize: 20, // // color: Colors.white), // // ), // // ), // // // backgroundColor: const Color(0xFF2b9af3), // // automaticallyImplyLeading: false, // // actions: [saveActions(provider)], // // leading: InkWell( // // onTap: () { // // Navigator.pop(context); // // }, // // child: const Icon( // // Icons.arrow_back_ios, // // color: Colors.white, // // ), // // ), // // ), // // body: Column( // // mainAxisSize: MainAxisSize.min, // // children: [ // // Expanded( // // child: ListView.builder( // // itemCount: provider.interactionReponseList.length, // // cacheExtent: double.parse( // // provider.interactionReponseList.length.toString()), // // itemBuilder: (context, index) { // // var item = provider.interactionReponseList[index]; // // sectionList = item.sectionList; // // return Column( // // children: [ // // Card( // // shape: RoundedRectangleBorder( // // borderRadius: BorderRadius.circular(0.0), // // ), // // elevation: 5, // // color: Constants.k2color, // // child: ExpansionTile( // // maintainState: true, // // backgroundColor: Constants.k2color, // // onExpansionChanged: (bool expanded) { // // setState(() { // // _isExpanded = expanded; // // }); // // }, // // trailing: Icon( // // _isExpanded // // ? Icons.keyboard_arrow_up // // : Icons.keyboard_arrow_down, // // color: Colors.white), // // // collapsedBackgroundColor: Color(0xFF2b9af3), // // initiallyExpanded: true, // // title: // // // Stack( // // // alignment: AlignmentDirectional.center, // // // children: [Contact Module Mobile app Filter section api issue Pooja p1 in-progress // // Text( // // item.sectionName, // // style: const TextStyle( // // color: Colors.white, // // fontWeight: FontWeight.normal, // // // fontSize: isTablet ? 18 : 14 // // ), // // ), // // children: [ // // Container( // // color: Colors.white, // // child: Padding( // // padding: // // const EdgeInsets.only(top: 8.0), // // child: Column( // // mainAxisSize: MainAxisSize.min, // // crossAxisAlignment: // // CrossAxisAlignment.center, // // children: [ // // GridView.count( // // physics: // // const NeverScrollableScrollPhysics(), // // crossAxisCount: // // context.responsive( // // 1, // // sm: 1, // small // // md: isTablet // // ? 2 // // : orientation == // // Orientation // // .landscape // // ? 2 // // : 1, // medium // // lg: sectionList.length == 1 // // ? 1 // // : 3, // large // // xl: 3, // extra large screen // // ), // // mainAxisSpacing: // // sectionList.length == 1 || // // !isTablet // // ? 1 // // : 3.5, // // // mainAxisSpacing: // // // orientation == Orientation.portrait // // // ? 1 // // // : 3, // // shrinkWrap: true, // // padding: EdgeInsets.zero, // // childAspectRatio: // // sectionList.length == 1 // // ? orientation == // // Orientation // // .landscape // // ? 10 // // : 4.8 // // : isTablet // // ? 2.8 // // : 3.5, // // children: List.generate( // // sectionList.length, // // (i) { // // SectionList sectionItem = // // sectionList[i]; // // dropdownvalue = // // sectionItem.widget == // // InteractionWidget // // .DROPDOWN // // ? sectionItem.value ?? // // "Select" // // : ' '; // // List< // // InputClass> 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 Column( // // //mainAxisSize: MainAxisSize.min, // // crossAxisAlignment: // // CrossAxisAlignment // // .start, // // children: [ // // sectionItem.widget == // // InteractionWidget // // .BUTTON && // // sectionItem // // .input == // // 'add' // // ? const SizedBox // // .shrink() // // : Padding( // // padding: // // const EdgeInsets // // .only( // // left: 8.0, // // right: // // 8.0), // // child: FittedBox( // // fit: BoxFit // // .scaleDown, // // child: Text( // // sectionItem // // .validation! // // .isRequired // // ? '${sectionItem.name}:*' // // : '${sectionItem.name}:', // // style: // // TextStyle( // // color: Colors // // .orange // // .shade800, // // fontSize: // // 18.0, // // // fontSize: isTablet // // // ? 18 // // // : 12, // // ), // // ), // // ), // // ), // // returnWidget( // // sectionItem: // // sectionItem, // // item: item, // // provider: provider, // // list: list, // // gridIndex: i, // // listIndex: index, // // widgetData: // // sectionItem // // .widget!, // // multiple: false), // // ], // // ); // // }, // // ), // // ), // // // SizedBox( // // // height: isTablet ? 15 : 5, // // // ), // // item.multiple // // ? gridViewWidget( // // provider, // // item.sectionName, // // item.multipleList ?? [], // // orientation, // // item, // // index) // // : const SizedBox.shrink(), // // provider.interactionReponseList // // .length == // // index - 1 // // ? saveActions(provider) // // : const SizedBox.shrink() // // //const Spacer(), // // ], // // ), // // ), // // ), // // ]), // // ), // // ], // // ); // // }, // // ), // // ), // // // const Spacer(), // // //saveActions(provider), // // Align( // // alignment: Alignment.bottomRight, // // child: Container( // // height: 80.0, // // width: 80.0, // // //child: // // // Text(provider.interactionReponseList.toString()))) // // child: _offsetPopup(provider.interactionReponseList))) // // ], // // ), // // ), // // ); // // }), // // ); // // }); // // } // final CarouselController _controller = CarouselController(); // @override // Widget build(BuildContext context) { // return Consumer( // builder: (BuildContext context, provider, Widget? child) { // return GestureDetector( // onTap: () { // FocusScope.of(context).requestFocus(FocusNode()); // }, // child: OrientationBuilder(builder: (context, orientation) { // return SafeArea( // child: Scaffold( // appBar: AppBar( // title: const FittedBox( // fit: BoxFit.scaleDown, // child: Text( // 'Record New Interaction', // style: TextStyle(color: Colors.white), // ), // ), // automaticallyImplyLeading: false, // actions: [saveActions(provider)], // leading: InkWell( // onTap: () { // Navigator.pop(context); // }, // child: const Icon( // Icons.arrow_back_ios, // color: Colors.white, // ), // ), // ), // body: Column( // children: [ // Expanded( // child: // // ListView.builder( // // itemCount: provider.interactionReponseList.length, // // cacheExtent: double.parse(provider // // .interactionReponseList.length // // .toString()), // // itemBuilder: (context, index) { // // var item = provider.interactionReponseList[index]; // // sectionList = item.sectionList; // // print("Section_ListttPooja: $sectionList"); // FlutterCarousel( // options: CarouselOptions( // controller: _controller, // height: MediaQuery.of(context) // .size // .height, // Adjust as needed // // aspectRatio: 16 / 9, // Optional aspect ratio adjustment // //viewportFraction: 0.9, // viewportFraction: 1.0, // initialPage: 0, // enableInfiniteScroll: false, // reverse: false, // autoPlay: false, // autoPlayInterval: Duration(seconds: 3), // autoPlayAnimationDuration: Duration(milliseconds: 800), // autoPlayCurve: Curves.fastOutSlowIn, // enlargeCenterPage: false, // disableCenter: false, // showIndicator: true, // scrollDirection: Axis.horizontal, // slideIndicator: CircularWaveSlideIndicator( // alignment: Alignment.bottomCenter, // currentIndicatorColor: Colors.black, // indicatorBackgroundColor: Colors.grey), // ), // items: provider.interactionReponseList.map((item) { // sectionList = item.sectionList; // print("Item_sectionListt11: ${item.sectionName}"); // print("Item_sectionListt: ${item.sectionList}"); // // provider.interactionReponseList[index] // // .map((item) { // return ListView( // children: [ // Container( // //width: MediaQuery.of(context).size.width, // // shape: RoundedRectangleBorder( // // borderRadius: BorderRadius.circular(0.0), // // ), // //elevation: 5, // color: Constants.k2color, // child: ExpansionTile( // maintainState: true, // // backgroundColor: Constants.k2color, // onExpansionChanged: (bool expanded) { // setState(() { // _isExpanded = expanded; // }); // }, // trailing: Icon( // _isExpanded // ? Icons.keyboard_arrow_up // : Icons.keyboard_arrow_down, // color: Colors.white), // // collapsedBackgroundColor: Color(0xFF2b9af3), // initiallyExpanded: true, // title: Stack( // alignment: AlignmentDirectional.center, // children: [ // Container( // // height: double.infinity, // width: double.infinity, // padding: const EdgeInsets.all(0.0), // decoration: BoxDecoration( // // color: Color(0xFF2b9af3), // color: Constants.k2color, // ), // child: Text( // item.sectionName, // style: const TextStyle( // color: Colors.white, // fontWeight: FontWeight.normal, // // fontSize: isTablet ? 18 : 14 // ), // )), // item.multiple // ? Align( // alignment: // Alignment.centerRight, // child: IconButton( // onPressed: () { // provider.getSectionItem( // item.sectionName, // ); // // print("index is $listIndex"); // setState(() {}); // }, // icon: const Icon( // Icons.add_circle_outline, // size: 24, // color: Colors.white, // ), // ), // ) // : const SizedBox.shrink() // ]), // // children: [ // // Column( // // mainAxisSize: MainAxisSize.max, // // children: [ // // Container( // // color: Colors.white, // // child: Text("pojaaa")), // // ], // // ) // // ], // children: [ // Column( // mainAxisSize: MainAxisSize.min, // children: [ // ColoredBox( // color: Colors.white, // child: Padding( // padding: // const EdgeInsets.only(top: 8.0), // child: Column( // mainAxisSize: MainAxisSize.min, // crossAxisAlignment: // CrossAxisAlignment.center, // children: [ // GridView.count( // physics: // const NeverScrollableScrollPhysics(), // crossAxisCount: // context.responsive( // 1, // sm: 1, // small // md: isTablet // ? 2 // : orientation == // Orientation // .landscape // ? 2 // : 1, // medium // lg: sectionList.length == 1 // ? 1 // : 3, // large // xl: 3, // extra large screen // ), // mainAxisSpacing: // sectionList.length == 1 || // !isTablet // ? 1 // : 3.5, // // mainAxisSpacing: // // orientation == Orientation.portrait // // ? 1 // // : 3, // shrinkWrap: true, // padding: EdgeInsets.zero, // // childAspectRatio: // // sectionList.length == 1 // // ? orientation == // // Orientation.landscape // // ? 10 // // : 4.8 // // : isTablet // // ? 2.8 // // : 3.0, // childAspectRatio: // sectionList.length == 1 // ? orientation == // Orientation // .landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.5, // children: List.generate( // sectionList.length, // (i) { // SectionList sectionItem = // sectionList[i]; // dropdownvalue = sectionItem // .widget == // InteractionWidget // .DROPDOWN // ? sectionItem.value ?? // "Select" // : ' '; // List< // InputClass> 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 Column( // mainAxisSize: // MainAxisSize.min, // crossAxisAlignment: // CrossAxisAlignment // .start, // children: [ // sectionItem.widget == // InteractionWidget // .BUTTON && // sectionItem // .input == // 'add' // ? const SizedBox // .shrink() // : Padding( // padding: const EdgeInsets // .only( // left: 8.0, // right: // 8.0), // child: // FittedBox( // fit: BoxFit // .scaleDown, // child: Text( // sectionItem // .validation! // .isRequired // ? '${sectionItem.name}:*' // : '${sectionItem.name}:', // style: // TextStyle( // color: Colors // .orange // .shade800, // fontSize: // 18.0, // // fontSize: isTablet // // ? 18 // // : 12, // ), // ), // ), // ), // returnWidget( // sectionItem: // sectionItem, // item: item, // provider: // provider, // list: list, // gridIndex: i, // listIndex: 0, // widgetData: // sectionItem // .widget!, // multiple: false), // ], // ); // }, // ), // ), // // SizedBox( // // height: isTablet ? 15 : 5, // // ), // item.multiple // ? gridViewWidget( // provider, // item.sectionName, // item.multipleList ?? [], // orientation, // item, // 0) // : const SizedBox.shrink(), // provider.interactionReponseList // .length == // 0 - 1 // ? saveActions(provider) // : const SizedBox.shrink() // //const Spacer(), // ], // ), // ), // ), // ], // ), // ], // )), // item.multiple // ? Padding( // padding: const EdgeInsets.all(18.0), // child: ElevatedButton( // onPressed: () { // provider.getSectionItem( // item.sectionName, // ); // }, // child: Text("Add "), // ), // ) // : SizedBox.shrink() // ], // ); // }).toList(), // ) // //}), // ), // //const SizedBox(height: 16.0), // Align( // alignment: Alignment.bottomCenter, // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ // Flexible( // child: ElevatedButton( // onPressed: () { // //if (_currentPageIndex > _totalPages - 1) // _controller.previousPage(); // }, // child: const Padding( // padding: EdgeInsets.all(8.0), // child: Icon(Icons.arrow_back), // ), // ), // ), // Flexible( // child: ElevatedButton( // // onPressed: () { // // _controller.nextPage( // // duration: Duration(milliseconds: 300), // // curve: Curves.ease, // // ); // // }, // onPressed: () { // _controller.nextPage( // duration: Duration(milliseconds: 300), // curve: Curves.ease, // ); // }, // child: const Padding( // padding: EdgeInsets.all(8.0), // child: Icon(Icons.arrow_forward), // ), // ), // ), // ], // ), // ), // // Align( // // alignment: Alignment.bottomRight, // // child: Container( // // height: 80.0, // // width: 80.0, // // child: _offsetPopup(provider.interactionReponseList), // // ), // // ), // ], // ), // ), // ); // }), // ); // }, // ); // } // // @override // // Widget build(BuildContext context) { // // return Consumer( // // builder: (BuildContext context, provider, Widget? child) { // // return GestureDetector( // // onTap: () { // // FocusScope.of(context).requestFocus(FocusNode()); // // }, // // child: OrientationBuilder(builder: (context, orientation) { // // return SafeArea( // // child: Scaffold( // // appBar: AppBar( // // title: const FittedBox( // // fit: BoxFit.scaleDown, // // child: Text( // // 'Record New Interaction', // // style: TextStyle(color: Colors.white), // // ), // // ), // // automaticallyImplyLeading: false, // // actions: [saveActions(provider)], // // leading: InkWell( // // onTap: () { // // Navigator.pop(context); // // }, // // child: const Icon( // // Icons.arrow_back_ios, // // color: Colors.white, // // ), // // ), // // ), // // body: Column( // // children: [ // // Expanded( // // child: CarouselSlider.builder( // // itemCount: provider.interactionReponseList.length, // // options: CarouselOptions( // // height: MediaQuery.of(context) // // .size // // .height, // Adjust as needed // // aspectRatio: // // 16 / 9, // Optional aspect ratio adjustment // // viewportFraction: 0.9, // // initialPage: 0, // // enableInfiniteScroll: false, // // reverse: false, // // autoPlay: false, // // autoPlayInterval: Duration(seconds: 3), // // autoPlayAnimationDuration: // // Duration(milliseconds: 800), // // autoPlayCurve: Curves.fastOutSlowIn, // // enlargeCenterPage: true, // // scrollDirection: Axis.horizontal, // // ), // // itemBuilder: // // (BuildContext context, int index, int realIndex) { // // var item = provider.interactionReponseList[index]; // // sectionList = item.sectionList; // // return Card( // // shape: RoundedRectangleBorder( // // borderRadius: BorderRadius.circular(0.0), // // ), // // elevation: 5, // // color: Constants.k2color, // // child: Text("pooja ${index}"), // // // ExpansionTile( // // // maintainState: true, // // // backgroundColor: Constants.k2color, // // // onExpansionChanged: (bool expanded) { // // // setState(() { // // // _isExpanded = expanded; // // // }); // // // }, // // // trailing: Icon( // // // _isExpanded // // // ? Icons.keyboard_arrow_up // // // : Icons.keyboard_arrow_down, // // // color: Colors.white, // // // ), // // // initiallyExpanded: true, // // // title: Text( // // // item.sectionName, // // // style: const TextStyle( // // // color: Colors.white, // // // fontWeight: FontWeight.normal, // // // ), // // // ), // // // children: [ // // // Container( // // // color: Colors.white, // // // child: Padding( // // // padding: const EdgeInsets.only(top: 8.0), // // // child: Column( // // // mainAxisSize: MainAxisSize.min, // // // crossAxisAlignment: // // // CrossAxisAlignment.center, // // // children: [ // // // GridView.count( // // // physics: // // // const NeverScrollableScrollPhysics(), // // // crossAxisCount: // // // context.responsive( // // // 1, // // // sm: 1, // small // // // md: isTablet // // // ? 2 // // // : orientation == // // // Orientation.landscape // // // ? 2 // // // : 1, // medium // // // lg: sectionList.length == 1 // // // ? 1 // // // : 3, // large // // // xl: 3, // extra large screen // // // ), // // // mainAxisSpacing: // // // sectionList.length == 1 || // // // !isTablet // // // ? 1 // // // : 3.5, // // // childAspectRatio: // // // sectionList.length == 1 // // // ? orientation == // // // Orientation.landscape // // // ? 10 // // // : 4.8 // // // : isTablet // // // ? 2.8 // // // : 3.5, // // // children: List.generate( // // // sectionList.length, // // // (i) { // // // SectionList sectionItem = // // // sectionList[i]; // // // // Your existing code for building widgets inside the GridView // // // return returnWidget( // // // sectionItem: sectionItem, // // // item: item, // // // provider: provider, // // // list: list, // // // gridIndex: i, // // // listIndex: index, // // // widgetData: // // // sectionItem.widget!, // // // multiple: false); // // // }, // // // ), // // // ), // // // // Other widgets inside the ExpansionTile's children // // // ], // // // ), // // // ), // // // ), // // // ], // // // ), // // // ); // // ); // // }, // // ), // // ), // // Align( // // alignment: Alignment.bottomRight, // // child: Container( // // height: 80.0, // // width: 80.0, // // child: _offsetPopup(provider.interactionReponseList), // // ), // // ), // // ], // // ), // // ), // // ); // // }), // // ); // // }, // // ); // // } // Widget returnWidget({ // required SectionList sectionItem, // required FormFieldData item, // required InteractionProvider provider, // required List list, // required int gridIndex, // required int listIndex, // required InteractionWidget widgetData, // required bool multiple, // }) { // switch (widgetData) { // case InteractionWidget.CHECKBOX: // return (sectionItem.inputList!.length >= 5) // ? customMultiselectDropdown( // sectionItem, provider, sectionItem.inputList!, multiple) // : buildCheckbox(sectionItem, item.sectionName, provider, multiple); // case InteractionWidget.AUTOCOMPLETE: // return customAutoCompletedropdown( // sectionItem, provider, list, multiple); // case InteractionWidget.MULTISELECT: // return customMultiselectDropdown(sectionItem, provider, list, multiple); // case InteractionWidget.RADIO: // return (sectionItem.inputList!.length >= 5) // ? customdropdown( // sectionItem, provider, sectionItem.inputList!, multiple) // : buildRadio(sectionItem, provider); // case InteractionWidget.LABEL: // return Text(sectionItem.input!); // case InteractionWidget.RANGESLIDER: // return CustomRangeSlider( // max: double.parse(sectionItem.max!), // min: double.parse(sectionItem.min!), // sliderPos: sectionItem.selectedValue!.isNotEmpty // ? double.parse(sectionItem.selectedValue!.last.toString()) // : double.parse(sectionItem.min!), // onChanged: (val) { // setState(() { // sectionItem.selectedValue = []; // sectionItem.selectedId = val.toString(); // sectionItem.selectedValue!.add(val.toInt()); // }); // }, // ); // case InteractionWidget.BUTTON: // return sectionItem.input == 'add' // ? const Offstage( // offstage: true, // child: Text("Visible"), // ) // : 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!.length > 1 // ? 'Files uploaded' // : "File Uploaded" // : 'No file uploaded', // style: TextStyle( // color: sectionItem.selectedValue!.isNotEmpty // ? Colors.green // : Colors.red), // ), // ], // ); // case InteractionWidget.TEXT: // return sectionItem.input == 'Date' // ? buildDateWidget(sectionItem) // : sectionItem.input == "textArea" // ? Expanded( // child: Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: InteractionTextField( // // maxchars: int.parse(sectionItem.validation!.chars ?? "0"), // controller: sectionItem.controller!, // labelText: sectionItem.name, // // maxlines: 8, // //minlines: 4, // onChanged: (val) { // sectionItem.selectedValue = []; // setState(() {}); // sectionItem.selectedValue!.add(val); // }, // ), // ), // ) // ////Poojaaaaa // : sectionItem.input == "text1" // ? Text( // sectionItem.depid!, // style: TextStyle( // fontSize: 18.0, fontWeight: FontWeight.normal), // ) // : Expanded( // child: Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: // // isTablet ? 200 : MediaQuery.of(context).size.width, // //height: isTablet ? 50 : 40, // width: MediaQuery.of(context).size.width, // height: isTablet ? 50 : 40, // child: InteractionTextField( // inputType: sectionItem.input == "number" // ? TextInputType.number // : TextInputType.name, // maxchars: int.parse(sectionItem.chars ?? "0"), // controller: sectionItem.controller!, // labelText: sectionItem.name, // onChanged: (val) { // sectionItem.selectedValue = []; // // sectionItem.selectedValue!.clear(); // provider.setTextValue( // val, sectionItem, multiple); // }, // ), // ), // ), // ); // case InteractionWidget.DROPDOWN: // // return customdropdown(sectionItem, provider, list, multiple); // return customAutoCompletedropdown( // sectionItem, provider, list, multiple); // } // } // Future requestPermission(Permission permission) async { // final status = await permission.request(); // setState(() { // print(status); // // _permissionStatus = status; // // print(_permissionStatus); // }); // } // Widget buildDateWidget(SectionList sectionItem) { // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: isTablet ? 200 : MediaQuery.of(context).size.width, // // height: isTablet ? 50 : 40, // width: MediaQuery.of(context).size.width, // child: TextField( // controller: // sectionItem.controller, //editing controller of this TextField // decoration: InputDecoration( // // border: OutlineInputBorder(), // border: OutlineInputBorder( // borderRadius: BorderRadius.circular(10.0), // ), // labelStyle: const TextStyle(fontSize: 16), // suffixIcon: const Icon(Icons.calendar_today), //icon of text field // labelText: "Enter Date" //label text of field // ), // readOnly: true, //set it true, so that user will not able to edit text // onTap: () async { // DateTime? pickedDate = await showDatePicker( // context: context, // initialDate: DateTime.now(), // firstDate: DateTime( // 2000), //DateTime.now() - not to allow to choose before today. // lastDate: DateTime(2101)); // if (pickedDate != null) { // print( // pickedDate); //pickedDate output format => 2021-03-10 00:00:00.000 // String formattedDate = // DateFormat('yyyy-MM-dd').format(pickedDate); // print( // formattedDate); //formatted date output using intl package => 2021-03-16 // //you can implement different kind of Date Format here according to your requirement // setState(() { // sectionItem.controller!.text = formattedDate; // sectionItem.selectedValue = []; // sectionItem.selectedValue! // .add(formattedDate); //set output date to TextField value. // }); // } else { // print("Date is not selected"); // } // }, // ), // ), // ); // } // Widget saveActions(InteractionProvider provider) { // return Align( // alignment: Alignment.centerRight, // child: Row( // mainAxisAlignment: MainAxisAlignment.spaceEvenly, // children: [ // Padding( // // padding: const EdgeInsets.all(4.0), // padding: const EdgeInsets.only(top: 8.0, bottom: 8.0, right: 5.0), // child: CustomButton( // backgroundColor: Colors.red.shade800, // onPressed: () { // //showDeleteProfileAlertDialog(context); // for (var textcontrollers // in provider.textEditingControllerList) { // textcontrollers.text = ''; // } // }, // textColor: Colors.white, // title: "Reset", // // height: 40, // // width: isTablet ? 100 : 80, // height: MediaQuery.of(context).size.height * 0.2, // // fontsize: isTablet ? 15 : 10.2, // fontsize: isTablet ? 16 : 12, // ), // ), // SizedBox( // //width: isTablet ? 20 : 4, // width: isTablet ? 20 : 2, // ), // Padding( // // padding: const EdgeInsets.all(8.0), // padding: const EdgeInsets.only(top: 8.0, bottom: 8.0), // child: CustomButton( // backgroundColor: Colors.green.shade500, // onPressed: () async { // String record = // await provider.saveJsonObject(context, widget.form); // print("Validation_isss: ${provider.isLoading}"); // if (provider.isLoading == false) { // print("Validation_false"); // showAlertDialog1(context, "Please fill all the fields"); // } else { // showAlertDialog(context, "Form $record Saved Successfully!"); // print("Validation_True"); // } // }, // textColor: Colors.white, // title: "Save", // // height: 40, // // width: isTablet ? 100 : 80, // height: MediaQuery.of(context).size.height * 0.2, // // width: MediaQuery.of(context).size.width * 0.1, // fontsize: isTablet ? 16 : 12, // ), // ), // SizedBox( // width: isTablet ? 20 : 2, // ), // ], // ), // ); // } // Widget buildRadio(SectionList sectionItem, InteractionProvider provider) { // List list = provider.getData2(sectionItem); // // .map((itemWord) => InputClass.fromJson(itemWord)) // // .toList(); // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: isTablet ? 250 : MediaQuery.of(context).size.width, // width: MediaQuery.of(context).size.width, // child: Row( // children: [ // for (InputClass value in list) // Row( // children: [ // Radio( // value: value.name, // activeColor: Colors.black, // groupValue: provider.radioValue, // onChanged: (String? value) { // setState(() { // print(value); // provider.radioValue = value!; // int index = // list.indexWhere((element) => element.name == value); // sectionItem.selectedValue!.add(list[index].id); // }); // }, // ), // Text(value.name), // ], // ), // ], // ), // ), // ); // } // Widget buildCheckbox(SectionList sectionItem, String sectionName, // InteractionProvider provider, bool multiple) { // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: 250, // width: MediaQuery.of(context).size.width, // child: Row( // children: [ // for (var value in provider.checkboxlist) // Row( // children: [ // FittedBox( // fit: BoxFit.scaleDown, // child: CheckboxListTile( // dense: true, // //contentPadding: const EdgeInsets.symmetric(vertical: 5), // value: value.ischecked ?? false, // activeColor: Colors.black, // checkColor: Colors.white, // onChanged: (bool? newvalue) { // value.ischecked = newvalue!; // provider.setcheckBoxValue(sectionItem, sectionName, // newvalue, value.id, multiple); // //setState(() {}); // }, // ), // ), // Text(value.name), // ], // ), // ], // ), // ), // ); // } // Widget customdropdown(SectionList sectionItem, InteractionProvider provider, // List list, bool multiple) { // // sectionItem.value = ''; // if (list.isEmpty) { // list = []; // InputClass inputClass = // InputClass(id: "no value", name: "Select ${sectionItem.name}"); // list.add(inputClass); // sectionItem.selectedObject = list[0]; // } // // InputClass selectedObj = list[0]; // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // width: MediaQuery.of(context).size.width, // // height: isTablet ? 60 : 40, // child: DropdownButtonFormField2( // isExpanded: true, // decoration: InputDecoration( // // Add Horizontal padding using menuItemStyleData.padding so it matches // // the menu padding when button's width is not specified. // isDense: true, // contentPadding: const EdgeInsets.symmetric(vertical: 5), // border: OutlineInputBorder( // borderRadius: BorderRadius.circular(10.0), // ), // // Add more decoration.. // ), // hint: Text( // 'Select ${sectionItem.name}', // style: const TextStyle(fontSize: 14), // ), // items: list // .map((item) => DropdownMenuItem( // value: item, // child: Text( // item.name, // style: const TextStyle( // fontSize: 14, // ), // ), // )) // .toList(), // value: sectionItem.selectedObject ?? list[0], // // // provider.getDropDownValue(sectionItem.value!, sectionItem, list) // // sectionItem.value ?? list[0].name, // validator: (value) { // if (value == null) { // return 'Please select ${sectionItem.name}'; // } // return null; // }, // onChanged: (value) { // //Do something when selected item is changed. // sectionItem.selectedObject = value!; // sectionItem.value = value.id; // provider.setDropDownValue(value.id, sectionItem, multiple); // print("selected ${sectionItem.value}"); // // setState(() {}); // }, // onSaved: (value) { // sectionItem.selectedObject = value!; // sectionItem.value = value.id; // provider.setDropDownValue(value.id, sectionItem, multiple); // // setState(() {}); // }, // buttonStyleData: const ButtonStyleData( // padding: EdgeInsets.only(right: 8), // ), // iconStyleData: const IconStyleData( // icon: Icon( // Icons.arrow_drop_down, // color: Colors.black45, // ), // iconSize: 24, // ), // dropdownStyleData: DropdownStyleData( // decoration: BoxDecoration( // borderRadius: BorderRadius.circular(10.0), // ), // ), // menuItemStyleData: const MenuItemStyleData( // padding: EdgeInsets.symmetric(horizontal: 16), // ), // ), // ), // ); // } // Widget customAutoCompletedropdown(SectionList sectionItem, // InteractionProvider provider, List list, bool multiple) { // list = sectionItem.inputList!; // print("***Autocomplete list ${list[0].name}"); // //} // //InputClass selectedObj = list[0]; // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: isTablet ? 200 : MediaQuery.of(context).size.width, // // height: isTablet ? 60 : 40, // width: MediaQuery.of(context).size.width, // child: DropdownButtonHideUnderline( // child: DropdownButtonFormField2( // isExpanded: true, // decoration: InputDecoration( // // Add Horizontal padding using menuItemStyleData.padding so it matches // // the menu padding when button's width is not specified. // isDense: true, // contentPadding: const EdgeInsets.symmetric(vertical: 5), // border: OutlineInputBorder( // borderRadius: BorderRadius.circular(10.0), // ), // // Add more decoration.. // ), // hint: Text( // 'Select Item', // style: TextStyle( // fontSize: 14, // color: Theme.of(context).hintColor, // ), // ), // items: list // .map((item) => DropdownMenuItem( // value: item, // child: Text( // item.name, // style: const TextStyle( // fontSize: 14, // ), // ), // )) // .toList(), // value: sectionItem.selectedObject, // onSaved: (value) { // sectionItem.selectedObject = value!; // provider.setAutoCompleteValue(value.id, sectionItem, multiple); // sectionItem.value = value.name; // }, // onChanged: (value) { // // setState(() { // sectionItem.selectedObject = value!; // provider.setAutoCompleteValue(value.id, sectionItem, multiple); // sectionItem.value = value.name; // // setState(() {}); // //}); // }, // buttonStyleData: const ButtonStyleData( // padding: EdgeInsets.symmetric(horizontal: 16), // height: 40, // width: 200, // ), // dropdownStyleData: const DropdownStyleData( // maxHeight: 200, // ), // menuItemStyleData: const MenuItemStyleData( // height: 40, // ), // dropdownSearchData: DropdownSearchData( // searchController: textEditingController, // searchInnerWidgetHeight: 50, // searchInnerWidget: Container( // height: 50, // padding: const EdgeInsets.only( // top: 8, // bottom: 4, // right: 8, // left: 8, // ), // child: TextFormField( // expands: true, // maxLines: null, // controller: textEditingController, // decoration: InputDecoration( // isDense: true, // contentPadding: const EdgeInsets.symmetric( // horizontal: 10, // vertical: 18, // ), // hintText: 'Search for an item...', // hintStyle: const TextStyle(fontSize: 12), // border: OutlineInputBorder( // borderRadius: BorderRadius.circular(10.0), // ), // ), // ), // ), // searchMatchFn: (item, searchValue) { // return item.value!.name.toString().contains(searchValue); // }, // ), // //This to clear the search value when you close the menu // onMenuStateChange: (isOpen) { // if (!isOpen) { // textEditingController.clear(); // } // }, // ), // ), // ), // ); // } // Widget customMultiselectDropdown(SectionList sectionItem, // InteractionProvider provider, List list, bool multiple) { // if (list.isEmpty) { // list = sectionItem.inputList!; // } // InputClass selectedObj = list[0]; // return Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: SizedBox( // // width: isTablet ? 200 : MediaQuery.of(context).size.width, // // height: isTablet ? 60 : 40, // width: MediaQuery.of(context).size.width, // // height: MediaQuery.of(context).size.height, // child: DropdownButtonHideUnderline( // child: DropdownButtonFormField2( // isExpanded: true, // decoration: InputDecoration( // // Add Horizontal padding using menuItemStyleData.padding so it matches // // the menu padding when button's width is not specified. // isDense: true, // contentPadding: const EdgeInsets.symmetric(vertical: 5), // border: OutlineInputBorder( // borderRadius: BorderRadius.circular(10.0), // ), // // Add more decoration.. // ), // hint: Text( // 'Select Items', // style: TextStyle( // fontSize: 14, // color: Theme.of(context).hintColor, // ), // ), // items: list.map((item) { // return DropdownMenuItem( // value: item, // //disable default onTap to avoid closing menu when selecting an item // enabled: false, // child: StatefulBuilder( // builder: (context, menuSetState) { // final isSelected = // sectionItem.selectedValue!.contains(item.name); // return InkWell( // onTap: () { // isSelected // ? sectionItem.selectedValue!.remove(item.name) // : sectionItem.selectedValue!.add(item.name); // //This rebuilds the StatefulWidget to update the button's text // setState(() {}); // //This rebuilds the dropdownMenu Widget to update the check mark // menuSetState(() {}); // }, // child: Container( // height: double.infinity, // padding: const EdgeInsets.symmetric(horizontal: 16.0), // child: Row( // children: [ // if (isSelected) // const Icon(Icons.check_box_outlined) // else // const Icon(Icons.check_box_outline_blank), // const SizedBox(width: 16), // Expanded( // child: Text( // item.name, // style: const TextStyle( // fontSize: 14, // ), // ), // ), // ], // ), // ), // ); // }, // ), // ); // }).toList(), // //Use last selected item as the current value so if we've limited menu height, it scroll to last item. // value: selectedObj, // // ? null // // : provider.selectedItems.last, // onChanged: (value) { // selectedObj = value!; // provider.setAutoCompleteValue(value.id, sectionItem, multiple); // sectionItem.value = value.name; // }, // onSaved: (value) { // selectedObj = value!; // provider.setAutoCompleteValue(value.id, sectionItem, multiple); // sectionItem.value = value.name; // }, // selectedItemBuilder: (context) { // return list.map( // (item) { // return Container( // alignment: AlignmentDirectional.center, // child: Text( // sectionItem.selectedValue!.join(', '), // style: const TextStyle( // fontSize: 14, // overflow: TextOverflow.ellipsis, // ), // maxLines: 1, // ), // ); // }, // ).toList(); // }, // buttonStyleData: const ButtonStyleData( // padding: EdgeInsets.only(left: 16, right: 8), // height: 40, // width: 140, // ), // menuItemStyleData: const MenuItemStyleData( // height: 40, // padding: EdgeInsets.zero, // ), // ), // ), // ), // ); // } // Widget gridViewWidget( // InteractionProvider provider, // String sectionName, // List sectionList, // Orientation orientation, // FormFieldData item, // int listIndex) { // print("ListInex: $listIndex"); // print("sectionName: $sectionName"); // print("sectionName: $sectionName"); // print("gridsectionlost_is: $sectionList"); // print("gridsectionlostleangth_is: ${sectionList.length}"); // List pooja = sectionList; // print("Pooja_isss: $pooja"); // print("Pooja_leangth_isss: ${pooja.length}"); // ////////////////////////////////////mycode/////////////////////////// // List> convertedArray = []; // print("Provider_leangth: ${item.sectionList.length}"); // for (int i = 0; i < pooja.length; i += item.sectionList.length + 1) { // print("poojaleangth: $pooja"); // convertedArray.add(pooja.sublist(i, i + item.sectionList.length + 1)); // } // print("ConvertedArray.leangth: $convertedArray"); // print("ConvertedArray.leangth: ${convertedArray.length}"); // return Column( // mainAxisSize: MainAxisSize.min, // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // for (var i = 0; i < convertedArray.length; i++) // DecoratedBox( // decoration: BoxDecoration( // // border: Border.all(color: Colors.black), // // borderRadius: BorderRadius.circular(10.0), // color: i % 2 == 0 // ? Color.fromARGB(133, 213, 241, 254) // : Colors.white, // ), // child: GridView.builder( // physics: const NeverScrollableScrollPhysics(), // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( // crossAxisCount: context.responsive( // 1, // sm: 1, // small // md: isTablet // ? 2 // : orientation == Orientation.landscape // ? 2 // : 1, // medium // lg: sectionList.length == 1 ? 1 : 3, // large // xl: 3, // extra large screen // ), // mainAxisSpacing: sectionList.length == 1 || !isTablet ? 1 : 1, // childAspectRatio: sectionList.length == 1 // ? orientation == Orientation.landscape // ? 10 // : 4.8 // : isTablet // ? 2.8 // : 3.7, // ), // shrinkWrap: true, // padding: EdgeInsets.zero, // itemCount: convertedArray[i].length, // itemBuilder: (context, index) { // SectionList sectionItem = convertedArray[i][index]; // 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 Padding( // padding: const EdgeInsets.only(top: 12.0), // child: Column( // mainAxisSize: MainAxisSize.min, // crossAxisAlignment: CrossAxisAlignment.start, // children: [ // // sectionItem.widget == InteractionWidget.BUTTON && // // sectionItem.input == 'add' || // // sectionItem.input == 'deletebtn' // // ? const SizedBox.shrink() // // : // Padding( // padding: const EdgeInsets.only(left: 8.0, right: 8.0), // child: FittedBox( // fit: BoxFit.scaleDown, // child: Text( // sectionItem.validation!.isRequired // ? "${sectionItem.name}*" // : sectionItem.name, // style: TextStyle( // color: Colors.orange.shade800, fontSize: 18), // ), // ), // ), // // 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: 8.0, right: 8.0), // child: CustomButton( // backgroundColor: // const Color.fromARGB( // 255, 233, 75, 75), // onPressed: () { // provider.deleteMultipleRows( // sectionItem.gid!, // sectionList[i], // sectionName); // setState(() {}); // }, // 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), // ], // ), // ); // }), // ) // ], // ); // //); // } // String fieldsValidation(InteractionProvider provider) { // List secList = provider.sectionList // .where((element) => element.validation!.isRequired = true) // .toList(); // if (secList.any((element) => element.selectedValue!.isEmpty)) { // return 'Fields cannot be empty'; // } // return ''; // } // String textFieldsValidation(InteractionProvider provider) { // return ''; // } // _displaySnackBar(String msg) { // final snackBar = SnackBar( // content: Text( // msg, // style: const TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold), // )); // ScaffoldMessenger.of(context).showSnackBar(snackBar); // //scaffoldKeyLogin.currentState!.showSnackBar(snackBar); // } // Future getEncodedFile(SectionList sectionItem) async { // String base64Image = ''; // var status = Platform.isAndroid // ? await Permission.manageExternalStorage.status // : await Permission.storage.status; // if (status.isGranted) { // FilePickerResult? result = // await FilePicker.platform.pickFiles(allowMultiple: true); // if (result != null) { // print(result.files.first.path); // print(result.files.last.path); // for (var files in result.files) { // File file = File(files.path!); // print("check file path : ${file.path}"); // fileName = file.path.split('/').last; // // Get the application folder directory // Directory? directory = Platform.isAndroid // ? await getExternalStorageDirectory() //FOR ANDROID // : await getApplicationDocumentsDirectory(); // String newPath = ""; //FOR ios // String convertedDirectoryPath = (directory?.path).toString(); // print("see the converted directory path $convertedDirectoryPath"); // newPath = "$convertedDirectoryPath/konectar/files"; // print("new path :$newPath"); // directory = Directory(newPath); // if (!await directory.exists()) { // await directory.create(recursive: true); // } // File newFile = await file.copy('${directory.path}/$fileName'); // print("new path is ${newFile.path}"); // final extension = p.extension(newFile.path); // List imageBytes = await newFile.readAsBytes(); // Uint8List imageUint8List = Uint8List.fromList(imageBytes); // base64Image = base64Encode(imageUint8List); // sectionItem.selectedValue!.add(base64Image); // sectionItem.extension!.add(extension); // sectionItem.fileName!.add(fileName); // } // } // } else { // print("not permitted"); // await requestPermission(Platform.isAndroid // ? Permission.manageExternalStorage // : Permission.storage); // } // } // showAlertDialog(BuildContext context, String record) { // Widget cancelButton = TextButton( // child: const Text("Ok"), // onPressed: () async { // Navigator.of(context).pop(); // Navigator.of(context).pop(); // }, // ); // // set up the AlertDialog // AlertDialog alert = AlertDialog( // title: const Text(""), // content: Text(record), // actions: [ // cancelButton, // ], // ); // // show the dialog // showDialog( // context: context, // builder: (BuildContext context) { // return alert; // }, // ); // } // showAlertDialog1(BuildContext context, String record) { // Widget cancelButton = TextButton( // child: const Text("Ok"), // onPressed: () async { // Navigator.of(context).pop(); // }, // ); // // set up the AlertDialog // AlertDialog alert = AlertDialog( // title: const Text(""), // content: Text(record), // actions: [ // cancelButton, // ], // ); // // show the dialog // showDialog( // context: context, // builder: (BuildContext context) { // return alert; // }, // ); // } // Widget _offsetPopup(List interactionReponseList) { // List trueElements = // interactionReponseList.where((element) => element.multiple).toList(); // print("trueElements_iss: $trueElements"); // return PopupMenuButton( // onSelected: (newValue) { // var provider = // Provider.of(context, listen: false); // setState(() { // _value = newValue; // it gives the value which is selected // var item = trueElements[_value]; // provider.getSectionItem( // item.sectionName, // ); // }); // print("Clicked Section111 $_value "); // add this property // print( // "interactionReponseList1 ${interactionReponseList} "); // add this property // }, // itemBuilder: (context) { // return List.generate(trueElements.length, (index) { // var provider = // Provider.of(context, listen: false); // var item = trueElements[index]; // print("itemitemitemitem_isss: ${item.multiple}"); // return PopupMenuItem( // value: index, // child: item.multiple == true // ? GestureDetector( // onTap: () { // print("Clicked Section ${item.sectionName}"); // // provider.getSectionItem( // // item.sectionName, // // ); // //print("Clicked Section : ${sectionList}") // setState(() { // provider.getSectionItem( // item.sectionName, // ); // }); // const DecoratedBox( // decoration: BoxDecoration( // // border: Border.all(color: Colors.black), // // borderRadius: BorderRadius.circular(10.0), // border: Border( // bottom: // BorderSide(width: 1.5, color: Colors.black), // //top: BorderSide(width: 1.5, color: Colors.black), // ), // ), // ); // }, // child: item.multiple == true // ? Text(' ${item.sectionName}') // : const SizedBox.shrink()) // : SizedBox.shrink(), // ); // }); // }, // icon: Container( // height: double.infinity, // width: double.infinity, // decoration: const ShapeDecoration( // color: Color.fromARGB(255, 8, 39, 92), // shape: StadiumBorder( // side: BorderSide(color: Colors.white, width: 2), // ), // ), // child: Icon(Icons.add, color: Colors.white), // )); // } // }