1098 lines
54 KiB
Dart
1098 lines
54 KiB
Dart
|
// import 'dart:convert';
|
||
|
// import 'dart:io';
|
||
|
|
||
|
// import 'package:flutter/material.dart';
|
||
|
// import 'package:flutter/services.dart';
|
||
|
// import 'package:intl/intl.dart';
|
||
|
// import 'package:provider/provider.dart';
|
||
|
// import 'package:dropdown_button2/dropdown_button2.dart';
|
||
|
// import 'package:pwa_ios/model/interaction_data.dart';
|
||
|
// import 'package:pwa_ios/utils/util.dart';
|
||
|
// import 'package:pwa_ios/viewmodel/interactionprovider.dart';
|
||
|
// import 'package:pwa_ios/widgets/custombutton.dart';
|
||
|
// import 'package:pwa_ios/widgets/customrangeslider.dart';
|
||
|
// import 'package:pwa_ios/widgets/interatciontextfield.dart';
|
||
|
// import 'package:file_picker/file_picker.dart';
|
||
|
// import 'package:pwa_ios/widgets/responsive_ext.dart';
|
||
|
|
||
|
// class InteractionScreenOld extends StatefulWidget {
|
||
|
// int index;
|
||
|
// InteractionScreenOld({super.key, required this.index});
|
||
|
|
||
|
// @override
|
||
|
// State<InteractionScreenOld> createState() => _InteractionScreenOldState();
|
||
|
// }
|
||
|
|
||
|
// class _InteractionScreenOldState extends State<InteractionScreenOld> {
|
||
|
// List<dynamic> interactionReponseList = [];
|
||
|
// List<SectionList> sectionList = [];
|
||
|
// List<TextEditingController> textEditingControllerList = [];
|
||
|
// int textfieldIndex = 0;
|
||
|
// String dropdownvalue = 'Select value';
|
||
|
// String? fileName;
|
||
|
// final TextEditingController textEditingController = TextEditingController();
|
||
|
// @override
|
||
|
// void initState() {
|
||
|
// WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
|
||
|
// init();
|
||
|
// });
|
||
|
|
||
|
// super.initState();
|
||
|
// }
|
||
|
|
||
|
// init() async {
|
||
|
// await Provider.of<InteractionProvider>(context, listen: false)
|
||
|
// .init(widget.index);
|
||
|
// setState(() {});
|
||
|
// }
|
||
|
|
||
|
// Future<String> loadData() async {
|
||
|
// var data =
|
||
|
// await rootBundle.loadString("assets/images/interactionform.json");
|
||
|
// setState(() {
|
||
|
// interactionReponseList = json.decode(data)["result"];
|
||
|
// for (var item in interactionReponseList) {
|
||
|
// for (var sectionItem in item["sectionList"]) {
|
||
|
// if (sectionItem['widget'] == 'text') {
|
||
|
// var textEditingController = TextEditingController();
|
||
|
|
||
|
// textEditingControllerList.add(textEditingController);
|
||
|
// sectionItem["controller"] = textEditingControllerList.last;
|
||
|
// }
|
||
|
// if (sectionItem['widget'] == 'dropdown') {
|
||
|
// List<String> list = List<String>.from(sectionItem['input']);
|
||
|
// sectionItem['value'] = list[0];
|
||
|
// }
|
||
|
// }
|
||
|
// }
|
||
|
// print(interactionReponseList);
|
||
|
// print("check textcontrollers ${textEditingControllerList.length}");
|
||
|
// });
|
||
|
// return "success";
|
||
|
// }
|
||
|
|
||
|
// @override
|
||
|
// Widget build(BuildContext context) {
|
||
|
// return Consumer<InteractionProvider>(
|
||
|
// builder: (BuildContext context, provider, Widget? child) {
|
||
|
// print("build context");
|
||
|
// print("${provider.interactionReponseList}");
|
||
|
// return GestureDetector(
|
||
|
// onTap: () {
|
||
|
// FocusScope.of(context).requestFocus(FocusNode());
|
||
|
// },
|
||
|
// child: Scaffold(
|
||
|
// appBar: AppBar(
|
||
|
// title: Text('Record New Interaction'),
|
||
|
// backgroundColor: 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(
|
||
|
// 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 Padding(
|
||
|
// padding: const EdgeInsets.all(8.0),
|
||
|
// child: Column(
|
||
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
||
|
// children: [
|
||
|
// item.sectionName.startsWith("/")
|
||
|
// ? const SizedBox.shrink()
|
||
|
// : Container(
|
||
|
// // height: double.infinity,
|
||
|
// width: double.infinity,
|
||
|
// padding: const EdgeInsets.all(8.0),
|
||
|
// decoration: const BoxDecoration(
|
||
|
// color: Color(0xFF2b9af3),
|
||
|
// ),
|
||
|
// child: Text(
|
||
|
// item.sectionName,
|
||
|
// style: const TextStyle(
|
||
|
// color: Colors.white,
|
||
|
// fontWeight: FontWeight.bold,
|
||
|
// fontSize: 18.0),
|
||
|
// )),
|
||
|
// const SizedBox(
|
||
|
// height: 20,
|
||
|
// ),
|
||
|
|
||
|
// Padding(
|
||
|
// padding: const EdgeInsets.only(left: 8.0),
|
||
|
// child: GridView.count(
|
||
|
// crossAxisCount:
|
||
|
// sectionList.length == 1 || !isTablet
|
||
|
// ? 1
|
||
|
// : 4,
|
||
|
// mainAxisSpacing:
|
||
|
// sectionList.length == 1 || !isTablet
|
||
|
// ? 1
|
||
|
// : 3,
|
||
|
// shrinkWrap: true,
|
||
|
// padding: EdgeInsets.zero,
|
||
|
// childAspectRatio:
|
||
|
// sectionList.length == 1 || !isTablet
|
||
|
// ? 8
|
||
|
// : 2.8,
|
||
|
// children: List.generate(
|
||
|
// sectionList.length,
|
||
|
// (i) {
|
||
|
// print(sectionList);
|
||
|
// 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)
|
||
|
// // (sectionItem.input as List)
|
||
|
// // .map((itemWord) =>
|
||
|
// // InputClass.fromJson(itemWord))
|
||
|
// // .toList()
|
||
|
// : [];
|
||
|
// // if (sectionItem.widget ==
|
||
|
// // InteractionWidget.CHECKBOX &&
|
||
|
// // provider.checkboxlist.isNotEmpty) {
|
||
|
// // for (InputClass obj
|
||
|
// // in provider.checkboxlist) {
|
||
|
// // // sectionItem.ischecked!.add(obj.ischecked);
|
||
|
// // obj.ischecked = false;
|
||
|
// // }
|
||
|
// // }
|
||
|
// return Column(
|
||
|
// crossAxisAlignment:
|
||
|
// CrossAxisAlignment.start,
|
||
|
// children: [
|
||
|
// sectionItem.widget ==
|
||
|
// InteractionWidget.BUTTON &&
|
||
|
// sectionItem.param == 'add'
|
||
|
// ? const SizedBox.shrink()
|
||
|
// : Text(
|
||
|
// '${sectionItem.name}:*',
|
||
|
// style: TextStyle(
|
||
|
// color: Colors.orange.shade800,
|
||
|
// fontSize: 18,
|
||
|
// ),
|
||
|
// ),
|
||
|
// const SizedBox(
|
||
|
// height: 15,
|
||
|
// ),
|
||
|
// if (sectionItem.widget ==
|
||
|
// InteractionWidget.RADIO)
|
||
|
// buildRadio(sectionItem, provider),
|
||
|
// sectionItem.widget ==
|
||
|
// InteractionWidget.TEXT
|
||
|
// ? sectionItem.input == 'Date'
|
||
|
// ? buildDateWidget(sectionItem)
|
||
|
// : sectionItem.input ==
|
||
|
// "textArea"
|
||
|
// ? SizedBox(
|
||
|
// width: double.maxFinite,
|
||
|
// height: 100,
|
||
|
// child: Column(
|
||
|
// crossAxisAlignment:
|
||
|
// CrossAxisAlignment
|
||
|
// .start,
|
||
|
// children: [
|
||
|
// InteractionTextField(
|
||
|
// maxchars: int.parse(
|
||
|
// sectionItem
|
||
|
// .chars ??
|
||
|
// "0"),
|
||
|
// controller:
|
||
|
// sectionItem
|
||
|
// .controller!,
|
||
|
// labelText:
|
||
|
// sectionItem
|
||
|
// .name,
|
||
|
// onChanged: (val) {
|
||
|
// sectionItem
|
||
|
// .selectedValue = [];
|
||
|
// setState(() {});
|
||
|
|
||
|
// sectionItem
|
||
|
// .selectedValue
|
||
|
// .add(val);
|
||
|
// },
|
||
|
// ),
|
||
|
// Text(
|
||
|
// "You have ${int.parse(sectionItem.chars ?? "100") - sectionItem.controller!.text.length} characters left.Maximum characters : ${sectionItem.chars}")
|
||
|
// ],
|
||
|
// ),
|
||
|
// )
|
||
|
// : SizedBox(
|
||
|
// width: 200,
|
||
|
// height: 50,
|
||
|
// child:
|
||
|
// InteractionTextField(
|
||
|
// maxchars: int.parse(
|
||
|
// sectionItem
|
||
|
// .chars ??
|
||
|
// "0"),
|
||
|
// controller:
|
||
|
// sectionItem
|
||
|
// .controller!,
|
||
|
// labelText:
|
||
|
// sectionItem.name,
|
||
|
// onChanged: (val) {
|
||
|
// sectionItem
|
||
|
// .selectedValue = [];
|
||
|
// sectionItem
|
||
|
// .selectedValue
|
||
|
// .add(val);
|
||
|
// },
|
||
|
// ),
|
||
|
// )
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget.DROPDOWN
|
||
|
// // ? item.sectionName == 'Other'
|
||
|
// // ? customdropdown(sectionItem,
|
||
|
// // provider, list)
|
||
|
// // // buildLocationDropdownWidget(
|
||
|
// // // sectionItem, provider)
|
||
|
// ? customdropdown(
|
||
|
// sectionItem, provider, list)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget.BUTTON
|
||
|
// ? sectionItem.param == 'add'
|
||
|
// ? IconButton(
|
||
|
// onPressed: () {
|
||
|
// // provider.addMultiplerows(
|
||
|
// // item.sectionList[
|
||
|
// // i],
|
||
|
// // item.sectionName);
|
||
|
// print(
|
||
|
// "index is $index");
|
||
|
// setState(() {
|
||
|
// // for (var item
|
||
|
// });
|
||
|
// },
|
||
|
// icon: const Icon(
|
||
|
// Icons.add,
|
||
|
// size: 30,
|
||
|
// color: Color
|
||
|
// .fromARGB(
|
||
|
// 255,
|
||
|
// 8,
|
||
|
// 39,
|
||
|
// 92),
|
||
|
// ),
|
||
|
// )
|
||
|
// : Row(
|
||
|
// children: [
|
||
|
// CustomButton(
|
||
|
// backgroundColor:
|
||
|
// const Color
|
||
|
// .fromARGB(
|
||
|
// 255,
|
||
|
// 233,
|
||
|
// 229,
|
||
|
// 229),
|
||
|
// onPressed:
|
||
|
// () async {
|
||
|
// FilePickerResult?
|
||
|
// result =
|
||
|
// await FilePicker
|
||
|
// .platform
|
||
|
// .pickFiles();
|
||
|
|
||
|
// if (result !=
|
||
|
// null) {
|
||
|
// File file = File(result
|
||
|
// .files
|
||
|
// .single
|
||
|
// .path!);
|
||
|
// sectionItem
|
||
|
// .selectedValue = [];
|
||
|
// sectionItem
|
||
|
// .selectedValue
|
||
|
// .add(file
|
||
|
// .path);
|
||
|
// fileName = file
|
||
|
// .path
|
||
|
// .split(
|
||
|
// '/')
|
||
|
// .last;
|
||
|
// setState(
|
||
|
// () {});
|
||
|
// } else {
|
||
|
// // User canceled the picker
|
||
|
// }
|
||
|
// },
|
||
|
// width: 120,
|
||
|
// height: 40,
|
||
|
// fontsize: 12,
|
||
|
// textColor:
|
||
|
// Colors
|
||
|
// .black,
|
||
|
// title:
|
||
|
// sectionItem
|
||
|
// .name),
|
||
|
// const SizedBox(
|
||
|
// width: 5,
|
||
|
// ),
|
||
|
// Text(
|
||
|
// sectionItem
|
||
|
// .selectedValue
|
||
|
// .isNotEmpty
|
||
|
// ? 'File Uploaded'
|
||
|
// : 'No file uploaded',
|
||
|
// style: TextStyle(
|
||
|
// color: sectionItem
|
||
|
// .selectedValue
|
||
|
// .isNotEmpty
|
||
|
// ? Colors
|
||
|
// .green
|
||
|
// : Colors
|
||
|
// .red),
|
||
|
// ),
|
||
|
// ],
|
||
|
// )
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget
|
||
|
// .LABEL
|
||
|
// ? Text(
|
||
|
// sectionItem.input!)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget
|
||
|
// .CHECKBOX
|
||
|
// ? buildCheckbox(
|
||
|
// sectionItem,
|
||
|
// item
|
||
|
// .sectionName,
|
||
|
// provider)
|
||
|
// : sectionItem
|
||
|
// .widget ==
|
||
|
// InteractionWidget
|
||
|
// .AUTOCOMPLETE
|
||
|
// ? customAutoCompletedropdown(
|
||
|
// sectionItem,
|
||
|
// provider,
|
||
|
// list)
|
||
|
// : sectionItem
|
||
|
// .widget ==
|
||
|
// InteractionWidget
|
||
|
// .MULTISELECT
|
||
|
// ? customMultiselectDropdown(
|
||
|
// sectionItem,
|
||
|
// provider,
|
||
|
// list)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget
|
||
|
// .RANGESLIDER
|
||
|
// ? CustomRangeSlider(
|
||
|
// sliderPos: sectionItem.selectedValue.isNotEmpty
|
||
|
// ? double.parse(sectionItem.selectedValue.last.toString())
|
||
|
// : 10.0,
|
||
|
// onChanged:
|
||
|
// (val) {
|
||
|
// setState(() {
|
||
|
// sectionItem.selectedValue = [];
|
||
|
// sectionItem.selectedId = val.toString();
|
||
|
// sectionItem.selectedValue.add(val.toInt());
|
||
|
// });
|
||
|
// },
|
||
|
// )
|
||
|
// : const SizedBox
|
||
|
// .shrink(),
|
||
|
// ],
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ),
|
||
|
// ),
|
||
|
// item.multiple
|
||
|
// ? gridViewWidget(provider, item.sectionName,
|
||
|
// item.multipleList ?? [])
|
||
|
// : const SizedBox.shrink(),
|
||
|
// provider.interactionReponseList.length == index - 1
|
||
|
// ? saveActions(provider)
|
||
|
// : const SizedBox.shrink()
|
||
|
// //const Spacer(),
|
||
|
// ],
|
||
|
// ),
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ),
|
||
|
// // const Spacer(),
|
||
|
// // saveActions(provider),
|
||
|
// ],
|
||
|
// )),
|
||
|
// );
|
||
|
// });
|
||
|
// }
|
||
|
|
||
|
// Widget buildDateWidget(SectionList sectionItem) {
|
||
|
// return SizedBox(
|
||
|
// width: sectionList.length == 1 ? MediaQuery.of(context).size.height : 200,
|
||
|
// height: 50,
|
||
|
// child: TextField(
|
||
|
// controller:
|
||
|
// sectionItem.controller, //editing controller of this TextField
|
||
|
// decoration: const InputDecoration(
|
||
|
// border: OutlineInputBorder(),
|
||
|
// labelStyle: TextStyle(fontSize: 16),
|
||
|
// suffixIcon: 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: [
|
||
|
// CustomButton(
|
||
|
// backgroundColor: Colors.indigoAccent,
|
||
|
// onPressed: () async {
|
||
|
// if (textFieldsValidation(provider).isEmpty) {
|
||
|
// await provider.saveJsonObject(context);
|
||
|
// _displaySnackBar('Form Saved Sucessfully!');
|
||
|
// } else {
|
||
|
// _displaySnackBar(textFieldsValidation(provider));
|
||
|
// }
|
||
|
// },
|
||
|
// textColor: Colors.white,
|
||
|
// title: "Save",
|
||
|
// height: 40,
|
||
|
// width: 100,
|
||
|
// fontsize: 16,
|
||
|
// ),
|
||
|
// const SizedBox(
|
||
|
// width: 20,
|
||
|
// ),
|
||
|
// CustomButton(
|
||
|
// backgroundColor: Colors.red.shade300,
|
||
|
// onPressed: () {
|
||
|
// //showDeleteProfileAlertDialog(context);
|
||
|
// for (var textcontrollers in provider.textEditingControllerList) {
|
||
|
// textcontrollers.text = '';
|
||
|
// }
|
||
|
// },
|
||
|
// textColor: Colors.white,
|
||
|
// title: "Reset",
|
||
|
// height: 40,
|
||
|
// width: 100,
|
||
|
// fontsize: 16,
|
||
|
// ),
|
||
|
// const SizedBox(
|
||
|
// width: 20,
|
||
|
// ),
|
||
|
// ],
|
||
|
// ),
|
||
|
// );
|
||
|
// }
|
||
|
|
||
|
// Widget buildRadio(SectionList sectionItem, InteractionProvider provider) {
|
||
|
// List<InputClass> list = provider.getData(sectionItem.id);
|
||
|
// // .map((itemWord) => InputClass.fromJson(itemWord))
|
||
|
// // .toList();
|
||
|
// return SizedBox(
|
||
|
// width: 250,
|
||
|
// child: Row(
|
||
|
// children: <Widget>[
|
||
|
// 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,
|
||
|
// ) {
|
||
|
// return SizedBox(
|
||
|
// width: 250,
|
||
|
// child: Row(
|
||
|
// children: <Widget>[
|
||
|
// for (var value in provider.checkboxlist)
|
||
|
// Row(
|
||
|
// children: [
|
||
|
// Checkbox(
|
||
|
// value: value.ischecked ?? false,
|
||
|
// activeColor: Colors.black,
|
||
|
// checkColor: Colors.white,
|
||
|
// onChanged: (bool? newvalue) {
|
||
|
// value.ischecked = newvalue!;
|
||
|
// provider.setcheckBoxValue(
|
||
|
// sectionItem, sectionName, newvalue, value.id);
|
||
|
// //setState(() {});
|
||
|
// },
|
||
|
// ),
|
||
|
// Text('${value.name}'),
|
||
|
// ],
|
||
|
// ),
|
||
|
// ],
|
||
|
// ),
|
||
|
// );
|
||
|
// }
|
||
|
|
||
|
// Widget customdropdown(SectionList sectionItem, InteractionProvider provider,
|
||
|
// List<InputClass> list) {
|
||
|
// // sectionItem.value = '';
|
||
|
|
||
|
// if (list.isEmpty) {
|
||
|
// list = sectionItem.inputList;
|
||
|
// // if (list.isNotEmpty) {
|
||
|
// // InputClass obj =
|
||
|
// // InputClass(id: "default", name: "Select ${sectionItem.name}");
|
||
|
// // list.insert(0, obj);
|
||
|
// // }
|
||
|
// }
|
||
|
// // InputClass selectedObj = list[0];
|
||
|
// return SizedBox(
|
||
|
// width: 250,
|
||
|
// height: 60,
|
||
|
// child: DropdownButtonFormField2<InputClass>(
|
||
|
// isExpanded: false,
|
||
|
// decoration: InputDecoration(
|
||
|
// // Add Horizontal padding using menuItemStyleData.padding so it matches
|
||
|
// // the menu padding when button's width is not specified.
|
||
|
// contentPadding: const EdgeInsets.symmetric(vertical: 5),
|
||
|
// border: OutlineInputBorder(
|
||
|
// borderRadius: BorderRadius.circular(15),
|
||
|
// ),
|
||
|
// // Add more decoration..
|
||
|
// ),
|
||
|
// hint: Text(
|
||
|
// 'Select ${sectionItem.name}',
|
||
|
// style: TextStyle(fontSize: 14),
|
||
|
// ),
|
||
|
// items: list
|
||
|
// .map((item) => DropdownMenuItem<InputClass>(
|
||
|
// 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);
|
||
|
// print("selected ${sectionItem.value}");
|
||
|
// // setState(() {});
|
||
|
// },
|
||
|
// onSaved: (value) {
|
||
|
// sectionItem.selectedObject = value!;
|
||
|
// sectionItem.value = value.id;
|
||
|
// provider.setDropDownValue(value.id, sectionItem);
|
||
|
// // 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(15),
|
||
|
// ),
|
||
|
// ),
|
||
|
// menuItemStyleData: const MenuItemStyleData(
|
||
|
// padding: EdgeInsets.symmetric(horizontal: 16),
|
||
|
// ),
|
||
|
// ),
|
||
|
// );
|
||
|
// }
|
||
|
|
||
|
// Widget customAutoCompletedropdown(SectionList sectionItem,
|
||
|
// InteractionProvider provider, List<InputClass> list) {
|
||
|
// // sectionItem.value = list[0].name;
|
||
|
// if (list.isEmpty) {
|
||
|
// list = sectionItem.inputList;
|
||
|
// }
|
||
|
// //InputClass selectedObj = list[0];
|
||
|
// return SizedBox(
|
||
|
// width: 250,
|
||
|
// height: 60,
|
||
|
// child: DropdownButtonHideUnderline(
|
||
|
// child: DropdownButtonFormField2<InputClass>(
|
||
|
// isExpanded: true,
|
||
|
// decoration: InputDecoration(
|
||
|
// // Add Horizontal padding using menuItemStyleData.padding so it matches
|
||
|
// // the menu padding when button's width is not specified.
|
||
|
// contentPadding: const EdgeInsets.symmetric(vertical: 5),
|
||
|
// border: OutlineInputBorder(
|
||
|
// borderRadius: BorderRadius.circular(15),
|
||
|
// ),
|
||
|
// // 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);
|
||
|
// sectionItem.value = value.name;
|
||
|
// },
|
||
|
// onChanged: (value) {
|
||
|
// // setState(() {
|
||
|
// sectionItem.selectedObject = value!;
|
||
|
// provider.setAutoCompleteValue(value.id, sectionItem);
|
||
|
// 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: 8,
|
||
|
// ),
|
||
|
// hintText: 'Search for an item...',
|
||
|
// hintStyle: const TextStyle(fontSize: 12),
|
||
|
// border: OutlineInputBorder(
|
||
|
// borderRadius: BorderRadius.circular(8),
|
||
|
// ),
|
||
|
// ),
|
||
|
// ),
|
||
|
// ),
|
||
|
// 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<InputClass> list) {
|
||
|
// if (list.isEmpty) {
|
||
|
// list = sectionItem.inputList;
|
||
|
// }
|
||
|
// InputClass selectedObj = list[0];
|
||
|
|
||
|
// return SizedBox(
|
||
|
// width: 250,
|
||
|
// height: 60,
|
||
|
// child: DropdownButtonHideUnderline(
|
||
|
// child: DropdownButtonFormField2<InputClass>(
|
||
|
// isExpanded: true,
|
||
|
// decoration: InputDecoration(
|
||
|
// // Add Horizontal padding using menuItemStyleData.padding so it matches
|
||
|
// // the menu padding when button's width is not specified.
|
||
|
// contentPadding: const EdgeInsets.symmetric(vertical: 5),
|
||
|
// border: OutlineInputBorder(
|
||
|
// borderRadius: BorderRadius.circular(15),
|
||
|
// ),
|
||
|
// // 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);
|
||
|
// sectionItem.value = value.name;
|
||
|
// },
|
||
|
// onSaved: (value) {
|
||
|
// selectedObj = value!;
|
||
|
// provider.setAutoCompleteValue(value.id, sectionItem);
|
||
|
// 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> sectionList) {
|
||
|
// return Padding(
|
||
|
// padding: const EdgeInsets.only(left: 8.0),
|
||
|
// child: GridView.count(
|
||
|
// crossAxisCount: 4,
|
||
|
// mainAxisSpacing: 3,
|
||
|
// shrinkWrap: true,
|
||
|
// padding: EdgeInsets.zero,
|
||
|
// childAspectRatio: 2.8,
|
||
|
// children: List.generate(
|
||
|
// sectionList.length,
|
||
|
// (i) {
|
||
|
// print(sectionList);
|
||
|
// 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)
|
||
|
// // (sectionItem.input as List)
|
||
|
// // .map((itemWord) =>
|
||
|
// // InputClass.fromJson(itemWord))
|
||
|
// // .toList()
|
||
|
// : [];
|
||
|
|
||
|
// return Column(
|
||
|
// crossAxisAlignment: CrossAxisAlignment.start,
|
||
|
// children: [
|
||
|
// sectionItem.widget == InteractionWidget.BUTTON &&
|
||
|
// sectionItem.param == 'add'
|
||
|
// ? const SizedBox.shrink()
|
||
|
// : Text(
|
||
|
// '${sectionItem.name}:*',
|
||
|
// style: TextStyle(
|
||
|
// color: Colors.orange.shade800,
|
||
|
// fontSize: 18,
|
||
|
// ),
|
||
|
// ),
|
||
|
// const SizedBox(
|
||
|
// height: 15,
|
||
|
// ),
|
||
|
// if (sectionItem.widget == InteractionWidget.RADIO)
|
||
|
// buildRadio(sectionItem, provider),
|
||
|
// sectionItem.widget == InteractionWidget.TEXT
|
||
|
// ? sectionItem.input == 'Date'
|
||
|
// ? buildDateWidget(sectionItem)
|
||
|
// : SizedBox(
|
||
|
// width: sectionList.length == 1
|
||
|
// ? MediaQuery.of(context).size.height
|
||
|
// : 200,
|
||
|
// height: 50,
|
||
|
// child: InteractionTextField(
|
||
|
// controller: sectionItem.controller!,
|
||
|
// onChanged: (val) {
|
||
|
// sectionItem.selectedValue = [];
|
||
|
// sectionItem.selectedValue.add(val);
|
||
|
// },
|
||
|
// labelText: sectionItem.name),
|
||
|
// )
|
||
|
// : sectionItem.widget == InteractionWidget.DROPDOWN
|
||
|
// // ? item.sectionName == 'Other'
|
||
|
// // ? customdropdown(sectionItem,
|
||
|
// // provider, list)
|
||
|
// // // buildLocationDropdownWidget(
|
||
|
// // // sectionItem, provider)
|
||
|
// ? customdropdown(sectionItem, provider, list)
|
||
|
// : sectionItem.widget == InteractionWidget.BUTTON
|
||
|
// ? sectionItem.param == 'add'
|
||
|
// ? IconButton(
|
||
|
// onPressed: () {
|
||
|
// provider.deleteMultipleRows(
|
||
|
// sectionItem.gid!,
|
||
|
// sectionList[i],
|
||
|
// sectionName);
|
||
|
|
||
|
// setState(() {});
|
||
|
// },
|
||
|
// icon: const Icon(
|
||
|
// Icons.cancel,
|
||
|
// size: 30,
|
||
|
// color: Color.fromARGB(255, 8, 39, 92),
|
||
|
// ),
|
||
|
// )
|
||
|
// : Row(
|
||
|
// children: [
|
||
|
// CustomButton(
|
||
|
// backgroundColor: const Color.fromARGB(
|
||
|
// 255, 233, 229, 229),
|
||
|
// onPressed: () async {
|
||
|
// FilePickerResult? result =
|
||
|
// await FilePicker.platform
|
||
|
// .pickFiles();
|
||
|
|
||
|
// if (result != null) {
|
||
|
// File file = File(
|
||
|
// result.files.single.path!);
|
||
|
// sectionItem.selectedValue = [];
|
||
|
// sectionItem.selectedValue
|
||
|
// .add(file.absolute);
|
||
|
// setState(() {});
|
||
|
// } else {
|
||
|
// // User canceled the picker
|
||
|
// }
|
||
|
// },
|
||
|
// width: 120,
|
||
|
// height: 40,
|
||
|
// fontsize: 12,
|
||
|
// textColor: Colors.black,
|
||
|
// title: sectionItem.name),
|
||
|
// const SizedBox(
|
||
|
// width: 5,
|
||
|
// ),
|
||
|
// Text(
|
||
|
// sectionItem.selectedValue.isNotEmpty
|
||
|
// ? 'File uploaded'
|
||
|
// : 'No file uploaded',
|
||
|
// style: TextStyle(
|
||
|
// color: sectionItem
|
||
|
// .selectedValue.isNotEmpty
|
||
|
// ? Colors.green
|
||
|
// : Colors.red),
|
||
|
// ),
|
||
|
// ],
|
||
|
// )
|
||
|
// : sectionItem.widget == InteractionWidget.LABEL
|
||
|
// ? Text(sectionItem.input!)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget.CHECKBOX
|
||
|
// ? buildCheckbox(
|
||
|
// sectionItem, sectionName, provider)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget.AUTOCOMPLETE
|
||
|
// ? customAutoCompletedropdown(
|
||
|
// sectionItem, provider, list)
|
||
|
// : sectionItem.widget ==
|
||
|
// InteractionWidget.MULTISELECT
|
||
|
// ? customMultiselectDropdown(
|
||
|
// sectionItem, provider, list)
|
||
|
// : const SizedBox.shrink(),
|
||
|
// ],
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ),
|
||
|
// );
|
||
|
// }
|
||
|
|
||
|
// String textFieldsValidation(InteractionProvider provider) {
|
||
|
// if (provider.sectionList
|
||
|
// .any((element) => element.controller!.text.isEmpty)) {
|
||
|
// return 'Fields cannot be empty';
|
||
|
// }
|
||
|
|
||
|
// return '';
|
||
|
// }
|
||
|
|
||
|
// _displaySnackBar(String msg) {
|
||
|
// final snackBar = SnackBar(
|
||
|
// content: Text(
|
||
|
// msg,
|
||
|
// style: TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold),
|
||
|
// ));
|
||
|
// ScaffoldMessenger.of(context).showSnackBar(snackBar);
|
||
|
// //scaffoldKeyLogin.currentState!.showSnackBar(snackBar);
|
||
|
// }
|
||
|
// }
|