| String executeDate; | String executeDate; | ||||
| String externalTable; | String externalTable; | ||||
| String description; | String description; | ||||
| List<TbObjectUpdateDTOList> tbObjectUpdateDTOList; | |||||
| List<TbObjectUpdateDTO> tbObjectUpdateDTOList; | |||||
| List<TbSuppliesUsingDetailsDTOs> tbSuppliesUsingDetailsDTOs; | List<TbSuppliesUsingDetailsDTOs> tbSuppliesUsingDetailsDTOs; | ||||
| List<TbNurseryDetailsDTO> tbNurseryDetailsDTOList; | |||||
| RequestActivity( | RequestActivity( | ||||
| {this.tbActivityTypeId, | {this.tbActivityTypeId, | ||||
| this.externalTable, | this.externalTable, | ||||
| this.description, | this.description, | ||||
| this.tbObjectUpdateDTOList, | this.tbObjectUpdateDTOList, | ||||
| this.tbSuppliesUsingDetailsDTOs}); | |||||
| this.tbSuppliesUsingDetailsDTOs, | |||||
| this.tbNurseryDetailsDTOList}); | |||||
| RequestActivity.fromJson(Map<String, dynamic> json) { | RequestActivity.fromJson(Map<String, dynamic> json) { | ||||
| tbActivityTypeId = json['tbActivityTypeId']; | tbActivityTypeId = json['tbActivityTypeId']; | ||||
| externalTable = json['externalTable']; | externalTable = json['externalTable']; | ||||
| description = json['description']; | description = json['description']; | ||||
| if (json['tbObjectUpdateDTOList'] != null) { | if (json['tbObjectUpdateDTOList'] != null) { | ||||
| tbObjectUpdateDTOList = new List<TbObjectUpdateDTOList>(); | |||||
| tbObjectUpdateDTOList = new List<TbObjectUpdateDTO>(); | |||||
| json['tbObjectUpdateDTOList'].forEach((v) { | json['tbObjectUpdateDTOList'].forEach((v) { | ||||
| tbObjectUpdateDTOList.add(new TbObjectUpdateDTOList.fromJson(v)); | |||||
| tbObjectUpdateDTOList.add(new TbObjectUpdateDTO.fromJson(v)); | |||||
| }); | }); | ||||
| } | } | ||||
| if (json['tbSuppliesUsingDetailsDTOs'] != null) { | if (json['tbSuppliesUsingDetailsDTOs'] != null) { | ||||
| .add(new TbSuppliesUsingDetailsDTOs.fromJson(v)); | .add(new TbSuppliesUsingDetailsDTOs.fromJson(v)); | ||||
| }); | }); | ||||
| } | } | ||||
| if (json['tbNurseryDetailsDTOList'] != null) { | |||||
| tbNurseryDetailsDTOList = new List<TbNurseryDetailsDTO>(); | |||||
| json['tbNurseryDetailsDTOList'].forEach((v) { | |||||
| tbNurseryDetailsDTOList.add(new TbNurseryDetailsDTO.fromJson(v)); | |||||
| }); | |||||
| } | |||||
| } | } | ||||
| Map<String, dynamic> toJson() { | Map<String, dynamic> toJson() { | ||||
| data['tbSuppliesUsingDetailsDTOs'] = | data['tbSuppliesUsingDetailsDTOs'] = | ||||
| this.tbSuppliesUsingDetailsDTOs.map((v) => v.toJson()).toList(); | this.tbSuppliesUsingDetailsDTOs.map((v) => v.toJson()).toList(); | ||||
| } | } | ||||
| if (this.tbNurseryDetailsDTOList != null) { | |||||
| data['tbNurseryDetailsDTOList'] = | |||||
| this.tbNurseryDetailsDTOList.map((v) => v.toJson()).toList(); | |||||
| } | |||||
| return data; | return data; | ||||
| } | } | ||||
| } | } | ||||
| class TbObjectUpdateDTOList { | |||||
| class TbObjectUpdateDTO { | |||||
| int tbObjectParameterId; | int tbObjectParameterId; | ||||
| String index; | String index; | ||||
| TbObjectUpdateDTOList({this.tbObjectParameterId, this.index}); | |||||
| TbObjectUpdateDTO({this.tbObjectParameterId, this.index}); | |||||
| TbObjectUpdateDTOList.fromJson(Map<String, dynamic> json) { | |||||
| TbObjectUpdateDTO.fromJson(Map<String, dynamic> json) { | |||||
| tbObjectParameterId = json['tbObjectParameterId']; | tbObjectParameterId = json['tbObjectParameterId']; | ||||
| index = json['index']; | index = json['index']; | ||||
| } | } | ||||
| return data; | return data; | ||||
| } | } | ||||
| } | } | ||||
| class TbNurseryDetailsDTO { | |||||
| String workerName; | |||||
| String trayNumber; | |||||
| TbNurseryDetailsDTO({this.workerName, this.trayNumber}); | |||||
| TbNurseryDetailsDTO.fromJson(Map<String, dynamic> json) { | |||||
| workerName = json['workerName']; | |||||
| trayNumber = json['trayNumber']; | |||||
| } | |||||
| Map<String, dynamic> toJson() { | |||||
| final Map<String, dynamic> data = new Map<String, dynamic>(); | |||||
| data['workerName'] = this.workerName; | |||||
| data['trayNumber'] = this.trayNumber; | |||||
| return data; | |||||
| } | |||||
| } |
| .toList(); | .toList(); | ||||
| return value; | return value; | ||||
| } | } | ||||
| Future<void> createActionCommon( | |||||
| Function(dynamic) onSuccess, Function(dynamic) onError, | |||||
| {@required String activityType, | |||||
| @required String activityData, | |||||
| List<String> filePaths}) async { | |||||
| var formData = FormData(); | |||||
| filePaths.forEach((f) { | |||||
| formData.files.add(MapEntry('images', MultipartFile.fromFileSync(f))); | |||||
| }); | |||||
| formData.fields.add(MapEntry('tbCommonActivityDTO', activityData)); | |||||
| try { | |||||
| await dio | |||||
| .post( | |||||
| "${ConstCommon.baseUrl}/api/create-common-activity/$activityType", | |||||
| data: formData) | |||||
| .then((value) { | |||||
| onSuccess(value.data); | |||||
| }); | |||||
| } on DioError catch (e) { | |||||
| onError(e); | |||||
| } | |||||
| } | |||||
| Future<void> updateActionCommon( | |||||
| Function(dynamic) onSuccess, Function(dynamic) onError, | |||||
| {String activityType, | |||||
| String activityAction, | |||||
| List<String> filePaths}) async { | |||||
| var formData = FormData(); | |||||
| filePaths.forEach((f) { | |||||
| formData.files.add(MapEntry('images', MultipartFile.fromFileSync(f))); | |||||
| }); | |||||
| formData.fields.add(MapEntry('tbCommonActivityDTO', activityAction)); | |||||
| try { | |||||
| await dio | |||||
| .put( | |||||
| "${ConstCommon.baseUrl}/api/update-common-activity/$activityType", | |||||
| data: formData) | |||||
| .then((value) { | |||||
| onSuccess(value.data); | |||||
| }); | |||||
| } on DioError catch (e) { | |||||
| onError(e); | |||||
| } | |||||
| } | |||||
| } | } |
| import 'package:farm_tpf/custom_model/NurseryDetail.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:get/get_state_manager/get_state_manager.dart'; | import 'package:get/get_state_manager/get_state_manager.dart'; | ||||
| class ChangeWorker extends GetxController { | class ChangeWorker extends GetxController { | ||||
| List<NurseryDetail> currentItems; | |||||
| NurseryDetail currentItem; | |||||
| List<TbNurseryDetailsDTO> currentItems; | |||||
| TbNurseryDetailsDTO currentItem; | |||||
| int currentIndex; | int currentIndex; | ||||
| void init(List<NurseryDetail> initItems) { | |||||
| void init(List<TbNurseryDetailsDTO> initItems) { | |||||
| currentItems = initItems ?? []; | currentItems = initItems ?? []; | ||||
| currentItem = NurseryDetail(); | |||||
| currentItem = TbNurseryDetailsDTO(); | |||||
| currentIndex = -1; | currentIndex = -1; | ||||
| update(); | update(); | ||||
| } | } | ||||
| update(); | update(); | ||||
| } | } | ||||
| void changeInitList(List<NurseryDetail> initListWorkers) { | |||||
| void changeInitList(List<TbNurseryDetailsDTO> initListWorkers) { | |||||
| currentItems = initListWorkers; | currentItems = initListWorkers; | ||||
| update(); | update(); | ||||
| } | } | ||||
| void addSupply(NurseryDetail nurseryDetail) { | |||||
| void addNurseryDetail(TbNurseryDetailsDTO nurseryDetail) { | |||||
| currentItems.insert(0, nurseryDetail); | currentItems.insert(0, nurseryDetail); | ||||
| currentItem = NurseryDetail(); | |||||
| currentItem = TbNurseryDetailsDTO(); | |||||
| update(); | update(); | ||||
| } | } | ||||
| void deleteSupply(int index) { | |||||
| void deleteNurseryDetail(int index) { | |||||
| currentItems.removeAt(index); | currentItems.removeAt(index); | ||||
| currentItem = NurseryDetail(); | |||||
| update(); | |||||
| } | |||||
| void editSupply(int index, NurseryDetail supplyUsing) { | |||||
| var newSup = supplyUsing; | |||||
| newSup.id = currentItems[index].id; | |||||
| currentItems[index] = newSup; | |||||
| currentItem = NurseryDetail(); | |||||
| currentItem = TbNurseryDetailsDTO(); | |||||
| update(); | update(); | ||||
| } | } | ||||
| } | } |
| import 'package:farm_tpf/custom_model/NurseryDetail.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | ||||
| import 'package:farm_tpf/presentation/screens/actions/controller/ChangeWorker.dart'; | import 'package:farm_tpf/presentation/screens/actions/controller/ChangeWorker.dart'; | ||||
| import 'package:farm_tpf/utils/const_string.dart'; | import 'package:farm_tpf/utils/const_string.dart'; | ||||
| import 'package:get/get_state_manager/get_state_manager.dart'; | import 'package:get/get_state_manager/get_state_manager.dart'; | ||||
| class WidgetWorker extends StatefulWidget { | class WidgetWorker extends StatefulWidget { | ||||
| final Function(List<TbNurseryDetailsDTO>) onChangeWorkers; | |||||
| const WidgetWorker({@required this.onChangeWorkers}); | |||||
| @override | @override | ||||
| _WidgetWorkerState createState() => _WidgetWorkerState(); | _WidgetWorkerState createState() => _WidgetWorkerState(); | ||||
| } | } | ||||
| Widget _buildListWorker() { | Widget _buildListWorker() { | ||||
| return GetBuilder<ChangeWorker>(builder: (data) { | return GetBuilder<ChangeWorker>(builder: (data) { | ||||
| widget.onChangeWorkers(data.currentItems); | |||||
| if (data.currentItems.length == 0) { | if (data.currentItems.length == 0) { | ||||
| return Container(); | return Container(); | ||||
| } else { | } else { | ||||
| color: Colors.redAccent, | color: Colors.redAccent, | ||||
| ), | ), | ||||
| onPressed: () { | onPressed: () { | ||||
| controller.deleteSupply(index); | |||||
| controller.deleteNurseryDetail(index); | |||||
| print("Delete worker"); | print("Delete worker"); | ||||
| }), | }), | ||||
| ) | ) | ||||
| _formWorkerKey.currentState.save(); | _formWorkerKey.currentState.save(); | ||||
| if (Validators.stringNotNullOrEmpty( | if (Validators.stringNotNullOrEmpty( | ||||
| _workerNameController.text)) { | _workerNameController.text)) { | ||||
| NurseryDetail _nurseryDetail = NurseryDetail() | |||||
| ..workerName = _workerNameController.text | |||||
| ..trayNumber = _trayNumberController.text; | |||||
| controller.addSupply(_nurseryDetail); | |||||
| TbNurseryDetailsDTO _nurseryDetail = | |||||
| TbNurseryDetailsDTO() | |||||
| ..workerName = _workerNameController.text | |||||
| ..trayNumber = _trayNumberController.text; | |||||
| controller.addNurseryDetail(_nurseryDetail); | |||||
| _workerNameController.clear(); | _workerNameController.clear(); | ||||
| _trayNumberController.clear(); | _trayNumberController.clear(); | ||||
| } else { | } else { |
| import 'dart:convert'; | |||||
| import 'package:farm_tpf/custom_model/NurseryDetail.dart'; | |||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIField.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIField.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | import 'package:farm_tpf/custom_model/action_form/ActionUIForm.dart'; | ||||
| import 'package:farm_tpf/custom_model/action_form/RequestActivity.dart'; | |||||
| import 'package:farm_tpf/data/api/app_exception.dart'; | |||||
| import 'package:farm_tpf/data/repository/repository.dart'; | import 'package:farm_tpf/data/repository/repository.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/app_bar_widget.dart'; | import 'package:farm_tpf/presentation/custom_widgets/app_bar_widget.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/bloc/media_helper_bloc.dart'; | import 'package:farm_tpf/presentation/custom_widgets/bloc/media_helper_bloc.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_media_picker.dart'; | import 'package:farm_tpf/presentation/custom_widgets/widget_media_picker.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_text_field_area.dart'; | import 'package:farm_tpf/presentation/custom_widgets/widget_text_field_area.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_text_form_field.dart'; | import 'package:farm_tpf/presentation/custom_widgets/widget_text_form_field.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_utils.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/actions/cubit/action_ui_cubit.dart'; | import 'package:farm_tpf/presentation/screens/actions/cubit/action_ui_cubit.dart'; | ||||
| import 'package:farm_tpf/utils/const_string.dart'; | |||||
| import 'package:farm_tpf/utils/pref.dart'; | import 'package:farm_tpf/utils/pref.dart'; | ||||
| import 'package:farm_tpf/utils/validators.dart'; | import 'package:farm_tpf/utils/validators.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:flutter_bloc/flutter_bloc.dart'; | import 'package:flutter_bloc/flutter_bloc.dart'; | ||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| import 'package:farm_tpf/utils/formatter.dart'; | |||||
| import 'dung/widget_dung_supply.dart'; | import 'dung/widget_dung_supply.dart'; | ||||
| import 'nursery/widget_worker.dart'; | import 'nursery/widget_worker.dart'; | ||||
| import 'state_management_helper/change_file_controller.dart'; | import 'state_management_helper/change_file_controller.dart'; | ||||
| class ActionScreen extends StatefulWidget { | class ActionScreen extends StatefulWidget { | ||||
| final int cropId; | |||||
| final int idAction; | final int idAction; | ||||
| final String activityType; | final String activityType; | ||||
| final String title; | final String title; | ||||
| ActionScreen( | ActionScreen( | ||||
| {@required this.idAction, | |||||
| {@required this.cropId, | |||||
| @required this.idAction, | |||||
| @required this.title, | @required this.title, | ||||
| @required this.activityType}); | @required this.activityType}); | ||||
| var pref = LocalPref(); | var pref = LocalPref(); | ||||
| final _executeByController = TextEditingController(); | final _executeByController = TextEditingController(); | ||||
| DateTime executeTime = DateTime.now(); | DateTime executeTime = DateTime.now(); | ||||
| List<String> filePaths = List<String>(); | |||||
| List<String> filePaths = <String>[]; | |||||
| var changeFileController = Get.put(ChangeFileController()); | var changeFileController = Get.put(ChangeFileController()); | ||||
| Map<String, TextEditingController> textFieldControllers = {}; | Map<String, TextEditingController> textFieldControllers = {}; | ||||
| Map<String, String> valueObjects = {}; | |||||
| var _requestActivity = RequestActivity(); | |||||
| final _repository = Repository(); | |||||
| var _actionUIForm = ActionUIForm(); | |||||
| var _nurseryDetails = <TbNurseryDetailsDTO>[]; | |||||
| Future<Null> getSharedPrefs() async { | Future<Null> getSharedPrefs() async { | ||||
| var currentFullName = await pref.getString(DATA_CONST.CURRENT_FULL_NAME); | var currentFullName = await pref.getString(DATA_CONST.CURRENT_FULL_NAME); | ||||
| void initState() { | void initState() { | ||||
| super.initState(); | super.initState(); | ||||
| getSharedPrefs(); | getSharedPrefs(); | ||||
| changeFileController.initValue(); | |||||
| } | } | ||||
| _validateInputs() async { | _validateInputs() async { | ||||
| if (_formKey.currentState.validate()) { | if (_formKey.currentState.validate()) { | ||||
| _formKey.currentState.save(); | _formKey.currentState.save(); | ||||
| LoadingDialog.showLoadingDialog(context); | |||||
| filePaths = Get.find<ChangeFileController>().newFiles; | |||||
| //Create request general model | |||||
| try { | try { | ||||
| LoadingDialog.hideLoadingDialog(context); | |||||
| //ADD NEW | |||||
| //Update | |||||
| LoadingDialog.showLoadingDialog(context); | |||||
| filePaths = Get.find<ChangeFileController>().newFiles; | |||||
| //Create request general model | |||||
| _requestActivity | |||||
| ..tbActivityTypeId = widget.idAction | |||||
| ..tbCropId = widget.cropId | |||||
| ..externalTable = | |||||
| _actionUIForm?.activityExtendTypeDTOList?.first?.externalTable ?? | |||||
| ''; | |||||
| filePaths = Get.find<ChangeFileController>().newFiles; | |||||
| textFieldControllers.forEach((key, value) { | textFieldControllers.forEach((key, value) { | ||||
| print(textFieldControllers[key].text); | print(textFieldControllers[key].text); | ||||
| valueObjects[key] = textFieldControllers[key].text; | |||||
| }); | }); | ||||
| //tbObjectUpdateDTOList | |||||
| var _objectPrameters = <TbObjectUpdateDTO>[]; | |||||
| valueObjects.forEach((key, value) { | |||||
| var objectUpdate = TbObjectUpdateDTO() | |||||
| ..tbObjectParameterId = int.tryParse(key) | |||||
| ..index = value; | |||||
| _objectPrameters.add(objectUpdate); | |||||
| }); | |||||
| _requestActivity.tbObjectUpdateDTOList = _objectPrameters; | |||||
| //CHECK NURSERY | |||||
| if (widget.activityType == 'ACTIVE_TYPE_NURSERY') { | |||||
| _requestActivity.tbNurseryDetailsDTOList = _nurseryDetails; | |||||
| } | |||||
| //convert data to json | |||||
| var activityCommonData = | |||||
| jsonEncode(_requestActivity.toJson()).toString(); | |||||
| print(activityCommonData); | |||||
| _repository.createActionCommon((data) { | |||||
| LoadingDialog.hideLoadingDialog(context); | |||||
| Get.back(result: 'ok'); | |||||
| Utils.showSnackBarSuccess(message: label_add_success); | |||||
| }, (error) { | |||||
| LoadingDialog.hideLoadingDialog(context); | |||||
| Utils.showSnackBarError(message: AppException.handleError(error)); | |||||
| }, | |||||
| activityType: widget.activityType, | |||||
| activityData: activityCommonData, | |||||
| filePaths: filePaths); | |||||
| //ADD NEW | |||||
| //Update | |||||
| } catch (e) { | } catch (e) { | ||||
| LoadingDialog.hideLoadingDialog(context); | LoadingDialog.hideLoadingDialog(context); | ||||
| print(e.toString()); | print(e.toString()); | ||||
| return WidgetFieldDateTimePicker( | return WidgetFieldDateTimePicker( | ||||
| initDateTime: executeTime, | initDateTime: executeTime, | ||||
| onUpdateDateTime: (selectedDate) { | onUpdateDateTime: (selectedDate) { | ||||
| // | |||||
| _requestActivity.executeDate = | |||||
| selectedDate.convertLocalDateTimeToStringUtcDateTime(); | |||||
| }); | }); | ||||
| } | } | ||||
| condition: field.tbActivityExtendTypeCondition, | condition: field.tbActivityExtendTypeCondition, | ||||
| invalidMessage: '', | invalidMessage: '', | ||||
| onPressed: (commonData) { | onPressed: (commonData) { | ||||
| print(commonData.name); | |||||
| valueObjects[field.id.toString()] = | |||||
| commonData.id.toString(); | |||||
| print(valueObjects[field.id.toString()]); | |||||
| }); | }); | ||||
| } else if (field.tbControlTypeName == 'date') { | } else if (field.tbControlTypeName == 'date') { | ||||
| return FieldDateWidget( | return FieldDateWidget( | ||||
| Widget generateSupply(String activityType) { | Widget generateSupply(String activityType) { | ||||
| switch (activityType) { | switch (activityType) { | ||||
| case 'ACTIVE_TYPE_NURSERY': | case 'ACTIVE_TYPE_NURSERY': | ||||
| return WidgetWorker(); | |||||
| return WidgetWorker(onChangeWorkers: (nurseryDetails) { | |||||
| _nurseryDetails = nurseryDetails; | |||||
| }); | |||||
| break; | break; | ||||
| case 'ACTIVE_TYPE_PLANTING': | case 'ACTIVE_TYPE_PLANTING': | ||||
| return Column( | return Column( | ||||
| print('loading...'); | print('loading...'); | ||||
| return Center(child: CircularProgressIndicator()); | return Center(child: CircularProgressIndicator()); | ||||
| } else if (state is ActionUiSuccess) { | } else if (state is ActionUiSuccess) { | ||||
| var actionUiForm = state.item as ActionUIForm; | |||||
| actionUiForm.objectParameterDTOList | |||||
| _actionUIForm = state.item as ActionUIForm; | |||||
| _actionUIForm.objectParameterDTOList | |||||
| .forEach((element) { | .forEach((element) { | ||||
| var textEditingController = | |||||
| new TextEditingController(); | |||||
| textFieldControllers.putIfAbsent( | |||||
| element.id.toString(), | |||||
| () => textEditingController); | |||||
| //generate controller | |||||
| if (element.tbControlTypeName == 'text' || | |||||
| element.tbControlTypeName == 'number' || | |||||
| element.tbControlTypeName == 'textarea') { | |||||
| var textEditingController = | |||||
| new TextEditingController(); | |||||
| textFieldControllers.putIfAbsent( | |||||
| element.id.toString(), | |||||
| () => textEditingController); | |||||
| } | |||||
| // generate value each parameter | |||||
| valueObjects.putIfAbsent( | |||||
| element.id.toString(), () => ''); | |||||
| }); | }); | ||||
| return Column( | return Column( | ||||
| children: [ | children: [ | ||||
| SizedBox( | SizedBox( | ||||
| height: 8.0, | height: 8.0, | ||||
| ), | ), | ||||
| generateTextField(actionUiForm | |||||
| generateTextField(_actionUIForm | |||||
| .objectParameterDTOList), | .objectParameterDTOList), | ||||
| _executeByField(), | _executeByField(), | ||||
| SizedBox( | SizedBox( | ||||
| @override | @override | ||||
| void dispose() { | void dispose() { | ||||
| _executeByController.dispose(); | _executeByController.dispose(); | ||||
| textFieldControllers.forEach((key, value) { | |||||
| textFieldControllers[key].dispose(); | |||||
| }); | |||||
| super.dispose(); | super.dispose(); | ||||
| } | } | ||||
| } | } |
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| class PlotActionScreen extends StatefulWidget { | class PlotActionScreen extends StatefulWidget { | ||||
| int cropId; | |||||
| String cropCode; | |||||
| int cropType; | |||||
| final int cropId; | |||||
| final String cropCode; | |||||
| final int cropType; | |||||
| PlotActionScreen({this.cropId, this.cropCode, this.cropType}); | PlotActionScreen({this.cropId, this.cropCode, this.cropType}); | ||||
| @override | @override | ||||
| _PlotActionScreenState createState() => _PlotActionScreenState(); | _PlotActionScreenState createState() => _PlotActionScreenState(); | ||||
| class _PlotActionScreenState extends State<PlotActionScreen> | class _PlotActionScreenState extends State<PlotActionScreen> | ||||
| with AutomaticKeepAliveClientMixin { | with AutomaticKeepAliveClientMixin { | ||||
| List<ActionType> actions = new List<ActionType>(); | |||||
| List<ActionType> actions = <ActionType>[]; | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| return GestureDetector( | return GestureDetector( | ||||
| onTap: () { | onTap: () { | ||||
| Get.to(ActionScreen( | Get.to(ActionScreen( | ||||
| idAction: actionType.id, | |||||
| title: actionType.description, | |||||
| activityType: actionType.name, | |||||
| )); | |||||
| cropId: widget.cropId, | |||||
| idAction: actionType.id, | |||||
| title: actionType.description, | |||||
| activityType: actionType.name)); | |||||
| }, | }, | ||||
| child: Container( | child: Container( | ||||
| margin: EdgeInsets.all(8), | margin: EdgeInsets.all(8), |