diff --git a/lib/config/const_variable.dart b/lib/config/const_variable.dart index 17d6750..507f138 100644 --- a/lib/config/const_variable.dart +++ b/lib/config/const_variable.dart @@ -15,7 +15,7 @@ class ConstVariable{ 'PE','PI','PO','PR','QH','RJ','RM','RN','RO','RR','RN','RO','RR','RS','SC','SE','SF','SJ','SP','TA','TO', 'VC','XX','ZU','-','--','']; List itensProceduresStart = [ - 'ATENDIMENTO INDIVIDUAL', + 'ATEND. INDIVIDUAL', 'VISTA DOMICILIAR' ]; List listNationality =[ @@ -106,33 +106,33 @@ class ConstVariable{ List serviceHomeCheckConditionlist = [ 'ACAMADO', - 'DOMICILIADO', - 'ÚLCERAS / FERIDAS (GRAU III OU IV)', - 'ACOMPANHAMENTO NUTRICIONAL', - 'USO DE SONDA NASO-GRÁSTRICA - SNG', - 'USO DE SONDA NASO-ENTERAL - SNE', - 'USO DE GASTRONOMIA', - 'USO DE COLOSTOMIA', - 'USO DE CISTOSTOMIA', - 'USO DE SONDA VESICAL DE DEMORA - SVD', - 'ACOMPANHAMENTO PRÉ-OPERATÓRIO', - 'ACOMPANHAMENTO PÓS-OPERATÓRIO', + 'ACOMP.NUTRICIONAL', + 'ACOMP.PÓS-OPERATÓRIO', + 'ACOMP.PRÉ-OPERATÓRIO', 'ADAPTAÇÃO AO USO DE ÓRTESE / PRÓTESE', - 'REABILITAÇÃO DOMICILIAR', + 'CUIDADOS PALIATIVOS NÃO ONCOLÓGICO', 'CUIDADOS PALIATIVOS ONCOLÓGICO', - 'CUIDADOS PALIATIVOS NÃO-ONCOLÓGICO', - 'OXIGENOTERAPIA DOMICILIAR', - 'USO DE TRAQUEOSTOMIA', - 'USO DE ASPIRADOR DE VIAS AÉRIAS PARA HIGIENE BUCAL', - 'SUPORTE VENTILATÓRIO NÃO INVASICO - CPAP', - 'SUPORTE VENTILATÓRIO NÃO INVASICO - BIPAP', 'DIÁLISE PERITONIAL', - 'PARACENTESE', + 'DOMICILIADO', 'MEDICAÇÃO PARENTERAL', + 'OXIGENOTERAPIA DOMICILIAR', + 'PARACENTESE', + 'REABILITAÇÃO DOMICILIAR', + 'SUPORTE VENTILATÓRIO NÃO INVASIVO - BIPAP', + 'SUPORTE VENTILATÓRIO NÃO INVASIVO - CPAP', + 'ÚLCERAS / FERIDAS (GRAU III OU IV)', + 'USO DE ASPIRADOR DE VIAS AÉRIAS PARA HIGIÊNE BRÔNQUICA', + 'USO DE CISTOSTOMIA', + 'USO DE COLOSTOMIA', + 'USO DE GASTROSTOMIA', + 'USO DE SONDA NASOENTERAL - SNE', + 'USO DE SONDA NASOGRÁSTRICA - SNG', + 'USO DE SONDA VESICAL DE DEMORA - SVD', + 'USO DE TRAQUEOSTOMIA', ]; List serviceHomeCheckProclist = [ - 'ACOMPANHAMENTO DE PACIENTE EM REABILITAÇÃO', + 'ACOMP.DE PACIENTE EM REABILITAÇÃO EM COMUNICAÇÃO ALTERNATIVA', 'ENEMA', 'ANTIBIOTICOTERAPIA PARENTERAL', 'OXIGENOTERAPIA', @@ -140,16 +140,16 @@ class ConstVariable{ 'RETIRADA DE PONTOS DE CIRURGIAS BÁSICAS', 'ATEND. FISIOTERAPÊUTICO PACIENTE C/ TRANST. RESP S/ COMPLICAÇÕES SISTÊMICAS', 'SONDAGEM GÁSTRICA', - 'ATENDIMENTO MÉDICO COM FINALIDADE DE ATESTAR ÓBITO', + 'ATEND. MÉDICO COM FINALIDADE DE ATESTAR ÓBITO', 'TERAPIA DE REIDRATAÇÃO ORAL', - 'ATENDIMENTO/ACOMPANHAMENTO EM REABILITAÇÃO NAS MÚLTIPLS DEFICIÊNCIAS', - 'TERAPIA DE REIDRATAÇÃO PARENTAL', + 'ATEND./ACOMP.EM REABILITAÇÃO NAS MÚLTIPLAS DEFICIÊNCIAS', + 'TERAPIA DE REIDRATAÇÃO PARENTERAL', 'ADAPTAÇÃO AO USO DE ÓRTESE / PRÓTESE', 'REABILITAÇÃO DOMICILIAR', 'CATETERISMO VESICAL DE ALÍVIO', 'TERAPIA FONOAUDIOLÓGICA INDIVIDUAL', 'CATETERISMO VESICAL DE DEMORA', - 'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO ESPECIF/NÃO ESPECIFICADA', + 'TRATAMENTO DE TRAUMATISMOS DE LOCALIZAÇÃO ESPECIFICADA/NÃO ESPECIFICADA', 'COLETA DE MATERIAL PARA EXAME LABORATORIAL', 'TRATAMENTO EM REABILITAÇÃO', 'CUIDADOS COM ESTOMAS', @@ -168,12 +168,12 @@ class ConstVariable{ DropDownDataModel(cod: 9,title: 'UNIDADE PRISIONAL OU CONGÊNERES'), DropDownDataModel(cod: 10,title: 'UNIDADE SOCIOEDUCATIVA'), DropDownDataModel(cod: 11,title: 'HOSPITAL'), - DropDownDataModel(cod: 12,title: 'UNIDADE DE PRONTO ATENDIMENTO'), + DropDownDataModel(cod: 12,title: 'UNIDADE DE PRONTO ATEND.'), DropDownDataModel(cod: 13,title: 'CACON/UNACON'), ]; List typeService = [ - DropDownDataModel(cod: 7,title: 'ATENDIMENTO PROGRAMADO'), - DropDownDataModel(cod: 8,title: 'ATENDIMENTO NÃO PROGRAMADO'), + DropDownDataModel(cod: 7,title: 'ATEND. PROGRAMADO'), + DropDownDataModel(cod: 8,title: 'ATEND. NÃO PROGRAMADO'), DropDownDataModel(cod: 9,title: 'VISITA DOMICILIAR PÓS ÓBITO'), ]; List typeModelService = [ @@ -191,7 +191,7 @@ class ConstVariable{ 'CONSULTA AGENDADA', 'DEMANDA ESPONTÂNEA - ESCUTA INICIAL/ORIENTAÇÃO', 'DEMANDA ESPONTÂNEA - CONSULTA NO DIA', - 'DEMANDA ESPONTÂNEA - ATENDIMENTO DE EMERGÊNCIA', + 'DEMANDA ESPONTÂNEA - ATEND. DE EMERGÊNCIA', ]; List listBreed = [ DropDownDataModel(cod: 4, title: 'AMARELA'), @@ -465,7 +465,7 @@ class ConstVariable{ DropDownDataModel(cod: 4, title: 'AFONICA'), DropDownDataModel(cod: 5, title: 'AUDITIVA'), DropDownDataModel(cod:10, title: 'FISICA'), - DropDownDataModel(cod: 2, title: 'IGNORADO'), + // DropDownDataModel(cod: 2, title: 'IGNORADO'), DropDownDataModel(cod: 6, title: 'INTELECTUAL'), DropDownDataModel(cod: 7, title: 'MOTORA'), DropDownDataModel(cod: 8, title: 'MULTIPLA'), diff --git a/lib/screens/configurations/sync_data_screen.dart b/lib/screens/configurations/sync_data_screen.dart index 9563690..cad01c6 100644 --- a/lib/screens/configurations/sync_data_screen.dart +++ b/lib/screens/configurations/sync_data_screen.dart @@ -76,7 +76,7 @@ class _SyncDataScreenState extends State { // print(tableINNERJOINCIDADAO_DOMICILIO); await DBQuerys().cadIndividuais().then((response)async{ tableCADASTROS_INDIVIDUAIS = response; - // print(tableCADASTROS_INDIVIDUAIS); + print(tableCADASTROS_INDIVIDUAIS); await DBQuerys().atendsIndivCompl().then((response)async{ tableATENDS_INDIV_COMPL = response; // print(tableATENDS_INDIV_COMPL); @@ -253,6 +253,9 @@ class _SyncDataScreenState extends State { mode = list[0]['MODE']; nameCityApi = list[0]['NAME_CITY_API']; }); + print(urlAPI); + print(mode); + print(nameCityApi); setState(() {}); } @@ -418,7 +421,7 @@ class _SyncDataScreenState extends State { textColor: ColorPalette.white, background: ColorPalette.appBar, borderColor: ColorPalette.appBar, - onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/home', (Route route) => false), + onPressed: ()=>Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username,)), (Route route) => false), ), ):Container(), done?Padding( diff --git a/lib/screens/home_screen.dart b/lib/screens/home_screen.dart index 6e43ad1..9389f0a 100644 --- a/lib/screens/home_screen.dart +++ b/lib/screens/home_screen.dart @@ -150,6 +150,7 @@ class _HomeScreenState extends State { numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}'==''?'-----':'${showResults[index]['NUM_PRONTUARIO']}', onTap: ()async { await DBQuerys().buscaCidadao(showResults[index]['NOME_CIDADAO']).then((list){ + print(showResults[index]['CD_USUARIO_SUS']); Navigator.push( context, MaterialPageRoute(builder:(context) => RegisterCitizenScreen(listData: list,username: widget.username,)), diff --git a/lib/screens/registers_citizen/register_citizen_screen.dart b/lib/screens/registers_citizen/register_citizen_screen.dart index 4232b37..375dc68 100644 --- a/lib/screens/registers_citizen/register_citizen_screen.dart +++ b/lib/screens/registers_citizen/register_citizen_screen.dart @@ -418,7 +418,7 @@ class _RegisterCitizenScreenState extends State { 'ID_LOGR_TIPO' : idTipo, 'NOME_LOGR' : selectStreet, 'CEP_LOGR' : cepController.text.isNotEmpty?int.parse(cepController.text):0, - 'NUMERO_LOGR' : numberController.text.isNotEmpty?int.parse(numberController.text):0, + 'NUMERO_LOGR' : numberController.text.isNotEmpty && numberController.text!='N/A'?int.parse(numberController.text):0, 'LOTEAMENTO_LOGR' : selectSubdivision, 'COMPL_LOGR' : complementController.text, 'PONTO_REFERENCIA' : referencePointController.text, @@ -627,7 +627,7 @@ class _RegisterCitizenScreenState extends State { observationController.text = widget.listData[0]['OBSERVACOES']; CPFController.text = widget.listData[0]['CPF'].toString(); CNSController.text = widget.listData[0]['CNS']; - voterController.text = widget.listData[0]['TITULO_ELEITOR'].toString()??''; + voterController.text = widget.listData[0]['TITULO_ELEITOR']==null?'':widget.listData[0]['TITULO_ELEITOR'].toString()??''; RGController.text = widget.listData[0]['RG_NUMERO'].toString()=='null'?'':widget.listData[0]['RG_NUMERO'].toString(); RGComplementController.text = widget.listData[0]['RG_COMPLEMENTO'].toString(); selectRGUF = widget.listData[0]['RG_UF']??''; @@ -1464,7 +1464,7 @@ class _RegisterCitizenScreenState extends State { setState(() { checkBoxNumber = value!; if(checkBoxNumber){ - numberController.text = '0'; + numberController.text = 'N/A'; }else{ numberController.clear(); } @@ -1569,9 +1569,12 @@ class _RegisterCitizenScreenState extends State { labelInput: 'Telefone - DDD', widthInput: width*0.7, widthSubtitle: width*0.7, + maxLength: 3, hintInput: 'Escreva aqui', enabled: !edit, mandatory: false, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1579,11 +1582,14 @@ class _RegisterCitizenScreenState extends State { subtitle: 'Telefone (Só Números)', errorInput: 'Campo Obrigatório', labelInput: 'Telefone(Só Números)', + maxLength: 8, widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: !edit, mandatory: false, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1594,8 +1600,11 @@ class _RegisterCitizenScreenState extends State { widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', + maxLength: 3, enabled: !edit, mandatory: false, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1603,11 +1612,14 @@ class _RegisterCitizenScreenState extends State { subtitle: 'Celular (Só Números)', errorInput: 'Campo Obrigatório', labelInput: 'Celular (Só Números)', + maxLength: 9, widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: !edit, mandatory: false, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1615,11 +1627,14 @@ class _RegisterCitizenScreenState extends State { subtitle: 'Recado - DDD', errorInput: 'Campo Obrigatório', labelInput: 'Recado - DDD', + maxLength: 3, widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: !edit, mandatory: mandatory, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1627,11 +1642,14 @@ class _RegisterCitizenScreenState extends State { subtitle: 'Recado (Só Números)', errorInput: 'Campo Obrigatório', labelInput: 'Recado (Só Números)', + maxLength: 9, widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: !edit, mandatory: mandatory, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1644,6 +1662,7 @@ class _RegisterCitizenScreenState extends State { hintInput: 'Escreva aqui', mandatory: false, enabled: !edit, + textInputType: TextInputType.emailAddress, onChanged: (v)=>setState((){}), ), ], @@ -1719,7 +1738,13 @@ class _RegisterCitizenScreenState extends State { widthSubtitle: width*0.7, hintInput: 'Escreva aqui', mandatory: false, + maxLength: 14, enabled: !edit, + textInputType: TextInputType.number, + inputFormatters: [ + FilteringTextInputFormatter.digitsOnly, + CpfInputFormatter() + ], onChanged: (v)async{ if(CPFController.text.isNotEmpty){ checkCPF = await MainControllers().validaCPF(v,editing); @@ -1740,8 +1765,11 @@ class _RegisterCitizenScreenState extends State { widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', + maxLength: 15, mandatory: false, enabled: !edit, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)async{ //783107557570002 if(CNSController.text.isNotEmpty){ @@ -1772,11 +1800,14 @@ class _RegisterCitizenScreenState extends State { subtitle: 'RG', errorInput: 'Campo Obrigatório', labelInput: 'RG', + maxLength: 8, widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', mandatory: false, enabled: !edit, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -1786,9 +1817,12 @@ class _RegisterCitizenScreenState extends State { labelInput: 'RG - Complemento', widthInput: width*0.7, widthSubtitle: width*0.7, + maxLength: 1, hintInput: 'Escreva aqui', mandatory: false, enabled: !edit, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly], onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( @@ -1981,6 +2015,8 @@ class _RegisterCitizenScreenState extends State { hintInput: 'Escreva aqui', mandatory: false, enabled: !edit, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( diff --git a/lib/screens/registers_citizen/register_individual_screen.dart b/lib/screens/registers_citizen/register_individual_screen.dart index f5b2c3f..831b93e 100644 --- a/lib/screens/registers_citizen/register_individual_screen.dart +++ b/lib/screens/registers_citizen/register_individual_screen.dart @@ -99,6 +99,9 @@ class _RegisterIndividualScreenState extends State { bool HIGIENE_BUCAL = false; bool OUTROS_HIGIENE = false; bool CNS_VALIDO = false; + bool FIBROMIALGIA = false; + bool TRANSTORNO_ESPECTRO_AUTISTA = false; + bool edit = false; bool editing = false; bool mandatory = false; @@ -221,23 +224,21 @@ class _RegisterIndividualScreenState extends State { loadCadIndividual()async{ ID_CIDADAO = widget.listData[0]['ID_CIDADAO']; - print(widget.listData[0]['ID_USUARIO_CADASTRO']); - - Database db = await DbSqliteLoad().intialDB(); + print(widget.listData[0]['ID_CAD_INDIVIDUAL']); + print(ID_CIDADAO); await DBQuerys().buscaCadInvidual(ID_CIDADAO).then((dataCitizen)async{ - // print(CD_USUARIO_SUS); if(dataCitizen.length != 0) { ID_PROFISSIONAL = dataCitizen[0]['ID_RESP_CADASTRO']; - print(dataCitizen[0]['ID_RESP_CADASTRO']); - // print(dataCitizen[0]['FIBROMIALGIA']); - // print(dataCitizen[0]['TRANSTORNO_ESPECTRO_AUTISTA']); TIPO_SALVAR = 'update'; showTab = true; FORA_AREA = dataCitizen[0]['FORA_AREA'] == 1 ? true : false; ID_EQUIPE = dataCitizen[0]['ID_EQUIPE']??0; STATUS_CADASTRO = dataCitizen[0]['STATUS_CADASTRO'] == null? false : dataCitizen[0]['STATUS_CADASTRO'] == 1 ? true : false; RESPONSAVEL_FAMILIAR = dataCitizen[0]['RESPONSAVEL_FAMILIAR'] == 1 ? true : false; + FIBROMIALGIA = dataCitizen[0]['FIBROMIALGIA']==1?true:false; + TRANSTORNO_ESPECTRO_AUTISTA = dataCitizen[0]['TRANSTORNO_ESPECTRO_AUTISTA']==1?true:false; + if(dataCitizen[0]['INE']!=null){ INE = 'INE: ${dataCitizen[0]['INE']} / Área : ${dataCitizen[0]['ID_AREA_CIDADAO']} - Microárea : ${dataCitizen[0]['ID_MICROAREA_CIDADAO']}'; INE_RESP_CADASTRO = 'INE: ${dataCitizen[0]['INE']} / Área: ${dataCitizen[0]['AREA']} - Microárea : ${dataCitizen[0]['MICROAREA']}'; @@ -438,7 +439,7 @@ class _RegisterIndividualScreenState extends State { }); if(ID_PROFISSIONAL!=0){ await DBQuerys().buscaProfissionalCadInd(ID_PROFISSIONAL).then((value)async{ - print(value); + // print(value); USUARIO_RESP_CADASTRO.text = value['NOME_PROFISSIONAL']; //aguardando unidade CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(value['ID_UNIDADE']); @@ -515,6 +516,8 @@ class _RegisterIndividualScreenState extends State { 'TUBERCULOSE' : TUBERCULOSE?1:2, 'CANCER' : CANCER?1:2, 'INTERNACAO' : INTERNACAO?1:2, + 'FIBROMIALGIA' : FIBROMIALGIA?1:2, + 'TRANSTORNO_ESPECTRO_AUTISTA': TRANSTORNO_ESPECTRO_AUTISTA?1:2, 'MOTIVO' : MOTIVO.text, 'DOENCA_CARDIACA' : DOENCA_CARDIACA_COD, 'PROBLEMA_RINS' : PROBLEMA_RINS_COD, @@ -1177,6 +1180,18 @@ class _RegisterIndividualScreenState extends State { value: CANCER, onChanged: !editing?null: (value)=>setState(()=>CANCER = value), ), + SwitchWithSubtitle( + width: width*0.7, + title: 'Fibromialgia', + value: FIBROMIALGIA , + onChanged: !editing?null: (value)=>setState(()=>FIBROMIALGIA = value), + ), + SwitchWithSubtitle( + width: width*0.7, + title: 'Transtorno Espectro Autista', + value: TRANSTORNO_ESPECTRO_AUTISTA, + onChanged: !editing?null: (value)=>setState(()=>TRANSTORNO_ESPECTRO_AUTISTA = value), + ), SwitchWithSubtitle( width: width*0.7, title: 'Internação nos Últimos 12 Meses', diff --git a/lib/screens/select_service/home_visit_screen.dart b/lib/screens/select_service/home_visit_screen.dart index 267532b..8297bde 100644 --- a/lib/screens/select_service/home_visit_screen.dart +++ b/lib/screens/select_service/home_visit_screen.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:line_icons/line_icons.dart'; import 'package:rkm/screens/home_screen.dart'; @@ -533,10 +534,11 @@ class _HomeVisitScreenState extends State { ) ); return CheckBoxSubtitle( + ontap:DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>tipoVisitaModel[index].check?tipoVisitaModel[index].check=false:tipoVisitaModel[index].check=true), subtitle: tipoVisitaModel[index].subtitle, checkbox:tipoVisitaModel[index].check, width: width*0.6, - onChanged: (value)=>setState(()=>tipoVisitaModel[index].check=value), + onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoVisitaModel[index].check=value), ); } ), @@ -548,8 +550,10 @@ class _HomeVisitScreenState extends State { checkbox2: VACINA, subtitle1: 'CONSULTA', subtitle2: 'VACINA', - onChanged1: (value)=>setState(()=>CONSULTA=value), - onChanged2: (value)=>setState(()=>VACINA=value), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONSULTA=value), + onChanged2: DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>VACINA=value), + ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONSULTA?CONSULTA=false:CONSULTA=true), + ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>VACINA?VACINA=false:VACINA=true), ), CheckBoxTwoSubtitle( width: width*0.7, @@ -557,8 +561,10 @@ class _HomeVisitScreenState extends State { checkbox2: CONDICIONALIDADES, subtitle1: 'EXAME', subtitle2: 'CONDICIONALIDADES', - onChanged1: (value)=>setState(()=>EXAME=value), - onChanged2: (value)=>setState(()=>CONDICIONALIDADES=value), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>EXAME=value), + onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>CONDICIONALIDADES=value), + ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>EXAME?EXAME=false:EXAME=true), + ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>CONDICIONALIDADES?CONDICIONALIDADES=false:CONDICIONALIDADES=true), ), TitleContainers(title: 'Controle Ambiental',width: width*0.7,textAling: TextAlign.start,fontSize: 15), CheckBoxTwoSubtitle( @@ -567,8 +573,10 @@ class _HomeVisitScreenState extends State { checkbox2: ACAO_MECANICA, subtitle1: 'AÇÃO EDUCATIVA', subtitle2: 'AÇÃO MECÂNICA', - onChanged1: (value)=>setState(()=>ACAO_EDUCATIVA=value), - onChanged2: (value)=>setState(()=>ACAO_MECANICA=value), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>ACAO_EDUCATIVA=value), + onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>ACAO_MECANICA=value), + ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>ACAO_EDUCATIVA?ACAO_EDUCATIVA=false:ACAO_EDUCATIVA=true), + ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>ACAO_MECANICA?ACAO_MECANICA=false:ACAO_MECANICA=true), ), CheckBoxTwoSubtitle( width: width*0.7, @@ -576,8 +584,10 @@ class _HomeVisitScreenState extends State { checkbox2: TRATAMENTO_FOCAL, subtitle1: 'IMÓVEL COM FOCO', subtitle2: 'TRATAMENTO FOCAL', - onChanged1: (value)=>setState(()=>IMOVEL_FOCO=value), - onChanged2: (value)=>setState(()=>TRATAMENTO_FOCAL=value), + onChanged1: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>IMOVEL_FOCO=value), + onChanged2: DESFECHO != 'VISITA REALIZADA'?null:(value)=>setState(()=>TRATAMENTO_FOCAL=value), + ontap1: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>IMOVEL_FOCO?IMOVEL_FOCO=false:IMOVEL_FOCO=true), + ontap2: DESFECHO != 'VISITA REALIZADA'?null: ()=>setState(()=>TRATAMENTO_FOCAL?TRATAMENTO_FOCAL=false:TRATAMENTO_FOCAL=true), ), TitleContainers(title: 'Acompanhamento',width: width*0.7,textAling: TextAlign.start,fontSize: 15), Container( @@ -597,7 +607,7 @@ class _HomeVisitScreenState extends State { subtitle: tipoAcompanhamentoModel[index].subtitle, checkbox:tipoAcompanhamentoModel[index].check, width: width*0.6, - onChanged: (value)=>setState(()=>tipoAcompanhamentoModel[index].check=value), + onChanged:DESFECHO != 'VISITA REALIZADA'?null: (value)=>setState(()=>tipoAcompanhamentoModel[index].check=value), ); } ), @@ -656,6 +666,9 @@ class _HomeVisitScreenState extends State { hintInput: 'Escreva aqui', mandatory: false, enabled: true, + maxLength: 7, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), InputWithSubtitle( @@ -668,6 +681,9 @@ class _HomeVisitScreenState extends State { hintInput: 'Escreva aqui', mandatory: false, enabled: true, + maxLength: 4, + textInputType: TextInputType.number, + inputFormatters: [FilteringTextInputFormatter.digitsOnly,], onChanged: (v)=>setState((){}), ), ], diff --git a/lib/widgets/check_box_subtitle.dart b/lib/widgets/check_box_subtitle.dart index 9874f90..932f11b 100644 --- a/lib/widgets/check_box_subtitle.dart +++ b/lib/widgets/check_box_subtitle.dart @@ -9,31 +9,36 @@ class CheckBoxSubtitle extends StatelessWidget { bool checkbox; var onChanged; double fontSize; + var ontap; CheckBoxSubtitle({ this.width = double.infinity, required this.checkbox, required this.subtitle, required this.onChanged, - this.fontSize = 14 + this.fontSize = 14, + this.ontap = null }); @override Widget build(BuildContext context) { - return Container( - width: width, - child: Row( - children: [ - Checkbox( - value: checkbox, - onChanged: onChanged - ), - Container( - width: width, - child: TextDefault(text: subtitle,fontSize: fontSize,color: ColorPalette.black54,) - ), - ], + return GestureDetector( + onTap: ontap, + child: Container( + width: width, + child: Row( + children: [ + Checkbox( + value: checkbox, + onChanged: onChanged + ), + Container( + width: width, + child: TextDefault(text: subtitle,fontSize: fontSize,color: ColorPalette.black54,maxLines: 2,) + ), + ], + ), ), ); } diff --git a/lib/widgets/check_box_two_subtitle.dart b/lib/widgets/check_box_two_subtitle.dart index 5f0a386..70254ed 100644 --- a/lib/widgets/check_box_two_subtitle.dart +++ b/lib/widgets/check_box_two_subtitle.dart @@ -11,6 +11,8 @@ class CheckBoxTwoSubtitle extends StatelessWidget { bool checkbox2; var onChanged1; var onChanged2; + var ontap1; + var ontap2; CheckBoxTwoSubtitle({ this.width = double.infinity, @@ -20,6 +22,8 @@ class CheckBoxTwoSubtitle extends StatelessWidget { required this.subtitle2, required this.onChanged1, required this.onChanged2, + this.ontap1 = null, + this.ontap2 = null, }); @override @@ -33,18 +37,24 @@ class CheckBoxTwoSubtitle extends StatelessWidget { value: checkbox1, onChanged: onChanged1 ), - Container( - width: width/2.5, - child: TextDefault(text: subtitle1,fontSize: 14,color: ColorPalette.black54,) + GestureDetector( + onTap: ontap1, + child: Container( + width: width/2.5, + child: TextDefault(text: subtitle1,fontSize: 14,color: ColorPalette.black54,) + ), ), Spacer(), Checkbox( value: checkbox2, onChanged: onChanged2 ), - Container( - width: width/3, - child: TextDefault(text: subtitle2,fontSize: 14,color: ColorPalette.black54) + GestureDetector( + onTap: ontap2, + child: Container( + width: width/3, + child: TextDefault(text: subtitle2,fontSize: 14,color: ColorPalette.black54) + ), ), ], ), diff --git a/lib/widgets/input_text.dart b/lib/widgets/input_text.dart index b9dfc10..af23004 100644 --- a/lib/widgets/input_text.dart +++ b/lib/widgets/input_text.dart @@ -15,6 +15,8 @@ class InputText extends StatelessWidget { int maxLines; Color colorBorder; var onChanged; + int maxLength; + List inputFormatters; InputText({ required this.controller, @@ -27,7 +29,9 @@ class InputText extends StatelessWidget { this.maxLines = 1, this.colorBorder = ColorPalette.black54, this.onChanged = null, - }); + this.maxLength = 200, + List? inputFormatters, // Alteração aqui + }) : inputFormatters = inputFormatters ?? [FormatText()]; @override Widget build(BuildContext context) { @@ -39,9 +43,8 @@ class InputText extends StatelessWidget { keyboardType: textInputType, maxLines: maxLines, onChanged: onChanged, - inputFormatters: [ - FormatText() - ], + maxLength: maxLength, + inputFormatters: inputFormatters, obscureText: this.obscure, controller: this.controller, style: TextStyle( diff --git a/lib/widgets/input_with_subtitle.dart b/lib/widgets/input_with_subtitle.dart index 4b0d76c..bc4b8d6 100644 --- a/lib/widgets/input_with_subtitle.dart +++ b/lib/widgets/input_with_subtitle.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:rkm/widgets/title_input.dart'; import '../config/color_palette.dart'; +import '../controllers/format_txt.dart'; import 'error_default.dart'; import 'input_text.dart'; @@ -20,6 +22,8 @@ class InputWithSubtitle extends StatelessWidget { int maxLines; Color colorBorder; String typeInput; + int maxLength; + List inputFormatters; InputWithSubtitle({ required this.subtitle, @@ -36,8 +40,10 @@ class InputWithSubtitle extends StatelessWidget { this.maxLines = 1, this.colorBorder = ColorPalette.white, required this.onChanged, - this.widthError = 0.7 -}); + this.widthError = 0.7, + this.maxLength = 200, + List? inputFormatters, // Alteração aqui + }) : inputFormatters = inputFormatters ?? [FormatText()]; @override Widget build(BuildContext context) { @@ -57,6 +63,8 @@ class InputWithSubtitle extends StatelessWidget { maxLines:maxLines, colorBorder: colorBorder, onChanged: onChanged, + maxLength: maxLength, + inputFormatters: inputFormatters, ), typeInput=='normal'&&(enabled&&mandatory) && (labelInput=='Nome' && splited.length<=1) ?ErrorDefault(widthDefault: widthError,error: errorInput,):Container(), typeInput!='normal'&&(enabled&&mandatory)&& errorInput!=''?ErrorDefault(widthDefault: widthError,error: errorInput,):Container(),