import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:rkm/config/color_palette.dart'; import 'package:rkm/config/const_variable.dart'; import 'package:rkm/screens/home_screen.dart'; import 'package:rkm/service/db/db_querys.dart'; import 'package:rkm/widgets/button_default.dart'; import 'package:rkm/widgets/title_containers.dart'; import '../../service/db/db_sqlite_sync.dart'; import '../../service/shared_preferences/shared_preferences_service.dart'; import '../../widgets/alert_dialog_default.dart'; import '../../widgets/appbar_default.dart'; import '../../widgets/dropdown_with_subtitle.dart'; import '../../widgets/error_default.dart'; import '../../widgets/input_with_subtitle.dart'; import '../../widgets/onbackbutton.dart'; import '../../widgets/subtitle_appbar_citizen.dart'; import '../../widgets/switch_with_subtitle.dart'; import '../../widgets/text_default.dart'; class RegisterHomeScreen extends StatefulWidget { List listData; String username; RegisterHomeScreen({required this.listData, required this.username}); @override State createState() => _RegisterHomeScreenState(); } class _RegisterHomeScreenState extends State { var QTDE_ANIMAIS = TextEditingController(); var NUM_COMODOS = TextEditingController(); var NUM_MORADORES = TextEditingController(); var NOME_RESP_CADASTRO = TextEditingController(); var CNES_RESP_CADASTRO = TextEditingController(); var DT_CADASTRO = TextEditingController(); var RENDA_TOTAL_FAMILIAR = TextEditingController(); var RENDA_MENSAL = TextEditingController(); var ANO_VEICULO = TextEditingController(); var MODELO_VEICULO = TextEditingController(); var VALOR_PARCELA_FINANCIAMENTO = TextEditingController(); var VALOR_PARCELA_EMPRESTIMO = TextEditingController(); var PROFISSAO = TextEditingController(); bool POSSUI_FINANCIAMENTO = false; bool POSSUI_EMPRESTIMO = false; bool POSSUI_VEICULO = false; bool FORA_AREA = false; bool DISPONIBILIDADE_ENERGIA = false; bool FL_ANIMAIS = false; bool ANIMAIS_GATO = false; bool ANIMAIS_CACHORRO = false; bool ANIMAIS_PASSARO = false; bool ANIMAIS_OUTROS = false; bool edit = false; bool editing = false; bool mandatory = false; bool CNS_VALIDO = false; bool showCheckError = false; List listTypeHome = []; List listINE = []; List listSituationHome = []; List listTypeLocation = []; List listTypeResidence = []; List listSituationRural = []; List listTypeAcessHome = []; List listMaterialHome = []; List listWaterHome = []; List listWaterTreatment = []; List listDestinyTrash = []; List listSanitary = []; List listCBO = []; List listINEPROF = []; List listaINE = []; int idUsuario = 0; String idUnidade = ''; String nomeUnidade = ''; String INE_DB=''; String? INE; String? TIPO_IMOVEL; String? SITUACAO_MORADIA; String? TIPO_LOCALIDADE; String? TIPO_DOMICILIO; String? SITUACAO_RURAL; String? TIPO_ACESSO; String? MAT_PREDOMINANTE; String? TIPO_ABASTECIMENTO; String? TRATAMENTO_AGUA; String? DESTINO_LIXO; String? ESCOAMENTO; String? CBO_RESP_CADASTRO; String? INE_RESP_CADASTRO; String? NOME_INSTITUICAO_PERMANENCIA; String? PROFISSIONAIS_VINCULADOS_INST; String? RESPONSAVEL_TECNICO_INST; String? CARGO_RESP_TECNICO_INST; String? TEL_RESP_TECNICO_INST; String CD_USUARIO_SUS = ''; int ID_CIDADAO=0; String date_cad = ''; String TIPO_SALVAR = 'new'; int ID_RESP_CADASTRO=0; int ID_DOMICILIO=0; int ID_AREA_DOMICILIO=0; int ID_MICROAREA_DOMICILIO=0; int TIPO_IMOVEL_COD = 0; int SITUACAO_MORADIA_COD = 0; int TIPO_LOCALIDADE_COD = 0; int TIPO_DOMICILIO_COD = 0; int SITUACAO_RURAL_COD = 0; int TIPO_ACESSO_COD = 0; int MAT_PREDOMINANTE_COD = 0; int TIPO_ABASTECIMENTO_COD = 0; int TRATAMENTO_AGUA_COD = 0; int DESTINO_LIXO_COD = 0; int ESCOAMENTO_COD = 0; int ID_EQUIPE = 0; escolherprazoInicio(BuildContext context) async { var pickDate = await showDatePicker( context: context, locale: Locale('pt','BR'), initialDate: DateTime.now(), firstDate: DateTime(2022), lastDate: DateTime(DateTime.now().year,12,31) ); if (pickDate != null) { setState(() { date_cad = '${pickDate.year}-${pickDate.month<10?'0':''}${pickDate.month}-${pickDate.day<10?'0':''}${pickDate.day}'; DT_CADASTRO.text = formatData(year: pickDate.year, month: pickDate.month, day: pickDate.day); }); } } String formatData({int? year, int? month, int? day}) { DateTime data = DateTime(year!, month!, day!); String formattedDate = DateFormat('dd/MM/yyyy').format(data); return formattedDate; } getUser(){ final PrefService _prefService = PrefService(); _prefService.readCacheIDUser().then((value){ if(value != null){ idUsuario = int.parse(value); } }); _prefService.readCacheUnidade().then((value){ if(value!=null){ idUnidade = value[0]; nomeUnidade = value[1]; } loadLists(); }); } loadLists(){ for(int i = 0; ConstVariable().listTypeHome.length > i; i++){ listTypeHome.add(ConstVariable().listTypeHome[i].title); } for(int i = 0; ConstVariable().listSituationHome.length > i; i++){ listSituationHome.add(ConstVariable().listSituationHome[i].title); } for(int i = 0; ConstVariable().listTypeLocation.length > i; i++){ listTypeLocation.add(ConstVariable().listTypeLocation[i].title); } for(int i = 0; ConstVariable().listTypeResidence.length > i; i++){ listTypeResidence.add(ConstVariable().listTypeResidence[i].title); } for(int i = 0; ConstVariable().listSituationRural.length > i; i++){ listSituationRural.add(ConstVariable().listSituationRural[i].title); } for(int i = 0; ConstVariable().listTypeAcessHome.length > i; i++){ listTypeAcessHome.add(ConstVariable().listTypeAcessHome[i].title); } for(int i = 0; ConstVariable().listMaterialHome.length > i; i++){ listMaterialHome.add(ConstVariable().listMaterialHome[i].title); } for(int i = 0; ConstVariable().listWaterHome.length > i; i++){ listWaterHome.add(ConstVariable().listWaterHome[i].title); } for(int i = 0; ConstVariable().listWaterTreatment.length > i; i++){ listWaterTreatment.add(ConstVariable().listWaterTreatment[i].title); } for(int i = 0; ConstVariable().listDestinyTrash.length > i; i++){ listDestinyTrash.add(ConstVariable().listDestinyTrash[i].title); } for(int i = 0; ConstVariable().listSanitary.length > i; i++){ listSanitary.add(ConstVariable().listSanitary[i].title); } loadRegisterHome(); } loadRegisterHome()async{ //dados PROFISSAO.text = widget.listData[0]['PROFISSAO']??''; RENDA_TOTAL_FAMILIAR.text = widget.listData[0]['RENDA_TOTAL_FAMILIAR']==null?'0,00':'${widget.listData[0]['RENDA_TOTAL_FAMILIAR'].toString().replaceAll('.', ',')}'; MODELO_VEICULO.text = widget.listData[0]['MODELO_VEICULO']; ANO_VEICULO.text = widget.listData[0]['ANO_VEICULO'].toString(); VALOR_PARCELA_FINANCIAMENTO.text = widget.listData[0]['VALOR_PARCELA_FINANCIAMENTO'].toString().replaceAll('.', ','); VALOR_PARCELA_EMPRESTIMO.text = widget.listData[0]['VALOR_PARCELA_EMPRESTIMO'].toString().replaceAll('.', ','); RENDA_MENSAL.text = widget.listData[0]['RENDA_MENSAL']==null?'0,00':'${widget.listData[0]['RENDA_MENSAL'].toString().replaceAll('.', ',')}'; POSSUI_VEICULO = widget.listData[0]['POSSUI_VEICULO']=='S'?true:false; POSSUI_FINANCIAMENTO = widget.listData[0]['POSSUI_FINANCIAMENTO']=='S'?true:false; POSSUI_EMPRESTIMO = widget.listData[0]['POSSUI_EMPRESTIMO']=='S'?true:false; // print(RENDA_TOTAL_FAMILIAR.text); // print(MODELO_VEICULO.text); // print(ANO_VEICULO.text); // print(VALOR_PARCELA_FINANCIAMENTO.text); // print(VALOR_PARCELA_EMPRESTIMO.text); // print(POSSUI_VEICULO); // print(POSSUI_FINANCIAMENTO); // print(POSSUI_EMPRESTIMO); ID_DOMICILIO = widget.listData[0]['ID_DOMICILIO']==null || widget.listData[0]['ID_DOMICILIO'] == ''?0:widget.listData[0]['ID_DOMICILIO']; ID_CIDADAO = widget.listData[0]['ID_CIDADAO']; CD_USUARIO_SUS = widget.listData[0]['CD_USUARIO_SUS']; DBQuerys().buscaCadDomiciliar(ID_DOMICILIO).then((dataHome)async{ TIPO_IMOVEL_COD = ID_DOMICILIO==0?0:dataHome[0]['TIPO_IMOVEL']??0; if(dataHome.length!=0){ TIPO_SALVAR = 'update'; } for (int i = 0; ConstVariable().listTypeHome.length > i; i++) { if (ConstVariable().listTypeHome[i].cod == TIPO_IMOVEL_COD) { TIPO_IMOVEL = ConstVariable().listTypeHome[i].title; } } listaINE = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); print('lista'); print(listaINE); ID_AREA_DOMICILIO = listaINE[0]['AREA']; ID_MICROAREA_DOMICILIO = listaINE[0]['MICROAREA']; ID_EQUIPE = listaINE[0]['ID_EQUIPE']; INE_DB = listaINE[0]['INE']; INE = 'INE: $INE_DB / Área: $ID_AREA_DOMICILIO - Microárea : $ID_MICROAREA_DOMICILIO'; listINE.add(INE!); FORA_AREA = dataHome.length==0?false:dataHome[0]['FORA_AREA']==1?true:false; SITUACAO_MORADIA_COD = dataHome.length==0?0:dataHome[0]['SITUACAO_MORADIA']??0; for (int i = 0; ConstVariable().listSituationHome.length > i; i++) { if (ConstVariable().listSituationHome[i].cod == SITUACAO_MORADIA_COD) { SITUACAO_MORADIA = ConstVariable().listSituationHome[i].title; } } TIPO_LOCALIDADE_COD = dataHome.length==0?0:dataHome[0]['TIPO_LOCALIDADE']??0; for (int i = 0; ConstVariable().listTypeLocation.length > i; i++) { if (ConstVariable().listTypeLocation[i].cod == TIPO_LOCALIDADE_COD) { TIPO_LOCALIDADE = ConstVariable().listTypeLocation[i].title; } } TIPO_DOMICILIO_COD =dataHome.length==0?0: dataHome[0]['TIPO_DOMICILIO']??0; for (int i = 0; ConstVariable().listTypeResidence.length > i; i++) { if (ConstVariable().listTypeResidence[i].cod == TIPO_DOMICILIO_COD) { TIPO_DOMICILIO = ConstVariable().listTypeResidence[i].title; } } NUM_MORADORES.text = dataHome.length==0?'':dataHome[0]['NUM_MORADORES'].toString()=='null'?'':dataHome[0]['NUM_MORADORES'].toString(); NUM_COMODOS.text = dataHome.length==0?'':dataHome[0]['NUM_COMODOS'].toString()=='null'?'':dataHome[0]['NUM_COMODOS'].toString(); SITUACAO_RURAL_COD = dataHome.length==0?0:dataHome[0]['SITUACAO_RURAL']??0; for (int i = 0; ConstVariable().listSituationRural.length > i; i++) { if (ConstVariable().listSituationRural[i].cod == SITUACAO_RURAL_COD) { SITUACAO_RURAL = ConstVariable().listSituationRural[i].title; } } TIPO_ACESSO_COD = dataHome.length==0?0:dataHome[0]['TIPO_ACESSO']??0; for (int i = 0; ConstVariable().listTypeAcessHome.length > i; i++) { if (ConstVariable().listTypeAcessHome[i].cod == TIPO_ACESSO_COD) { TIPO_ACESSO = ConstVariable().listTypeAcessHome[i].title; } } MAT_PREDOMINANTE_COD = dataHome.length==0?0:dataHome[0]['MAT_PREDOMINANTE']??0; for (int i = 0; ConstVariable().listMaterialHome.length > i; i++) { if (ConstVariable().listMaterialHome[i].cod == MAT_PREDOMINANTE_COD) { MAT_PREDOMINANTE = ConstVariable().listMaterialHome[i].title; } } DISPONIBILIDADE_ENERGIA = dataHome.length==0?false:dataHome[0]['DISPONIBILIDADE_ENERGIA']==1?true:false; TIPO_ABASTECIMENTO_COD = dataHome.length==0?0:dataHome[0]['TIPO_ABASTECIMENTO']??0; for (int i = 0; ConstVariable().listWaterHome.length > i; i++) { if (ConstVariable().listWaterHome[i].cod == TIPO_ACESSO_COD) { TIPO_ABASTECIMENTO = ConstVariable().listWaterHome[i].title; } } TRATAMENTO_AGUA_COD = dataHome.length==0?0:dataHome[0]['TRATAMENTO_AGUA']??0; for (int i = 0; ConstVariable().listWaterHome.length > i; i++) { if (ConstVariable().listWaterTreatment[i].cod == TRATAMENTO_AGUA_COD) { TRATAMENTO_AGUA = ConstVariable().listWaterTreatment[i].title; } } DESTINO_LIXO_COD = dataHome.length==0?0:dataHome[0]['DESTINO_LIXO']??0; for (int i = 0; ConstVariable().listDestinyTrash.length > i; i++) { if (ConstVariable().listDestinyTrash[i].cod == DESTINO_LIXO_COD) { DESTINO_LIXO = ConstVariable().listDestinyTrash[i].title; } } ESCOAMENTO_COD = dataHome.length==0?0:dataHome[0]['ESCOAMENTO']??0; for (int i = 0; ConstVariable().listSanitary.length > i; i++) { if (ConstVariable().listSanitary[i].cod == ESCOAMENTO_COD) { ESCOAMENTO = ConstVariable().listSanitary[i].title; } } FL_ANIMAIS = dataHome.length==0?false:dataHome[0]['FL_ANIMAIS']==1?true:false; ANIMAIS_GATO = dataHome.length==0?false:dataHome[0]['ANIMAIS_GATO']==1?true:false; ANIMAIS_CACHORRO = dataHome.length==0?false:dataHome[0]['ANIMAIS_CACHORRO']==1?true:false; ANIMAIS_PASSARO = dataHome.length==0?false:dataHome[0]['ANIMAIS_PASSARO']==1?true:false; QTDE_ANIMAIS.text = dataHome.length==0?'':dataHome[0]['QTDE_ANIMAIS']==null?'':dataHome[0]['QTDE_ANIMAIS'].toString(); date_cad = dataHome.length==0?'':dataHome[0]['DT_CADASTRO']??''; List splitted = date_cad.toString().split('-'); DT_CADASTRO.text = splitted.length<2?'':'${splitted[2]}/${splitted[1]}/${splitted[0]}'; ID_EQUIPE = dataHome.length==0?0:dataHome[0]['ID_EQUIPE']??0; NOME_INSTITUICAO_PERMANENCIA = dataHome.length==0?'':dataHome[0]['NOME_INSTITUICAO_PERMANENCIA']; PROFISSIONAIS_VINCULADOS_INST = dataHome.length==0?'':dataHome[0]['PROFISSIONAIS_VINCULADOS_INST']; RESPONSAVEL_TECNICO_INST = dataHome.length==0?'':dataHome[0]['RESPONSAVEL_TECNICO_INST']; CARGO_RESP_TECNICO_INST = dataHome.length==0?'':dataHome[0]['CARGO_RESP_TECNICO_INST']; TEL_RESP_TECNICO_INST = dataHome.length==0?'':dataHome[0]['TEL_RESP_TECNICO_INST']; await DBQuerys().buscaCBOProfissional(idUsuario).then((list){ if(list.length!=0){ for(int i = 0; list.length>i;i++){ listCBO.add(list[i]['CODIGO_CBO'].toString()); } } CBO_RESP_CADASTRO = list.length == 0?null:list[0]['CODIGO_CBO'].toString(); setState(() {}); }); await DBQuerys().buscaProfissionalCadInd(dataHome[0]['ID_RESP_CADASTRO']).then((list)async{ ID_RESP_CADASTRO = list['ID_PROFISSIONAL']; NOME_RESP_CADASTRO.text = list['NOME_PROFISSIONAL']; String CNS_PROFISSIONAL = list['CNS_PROFISSIONAL']; CNES_RESP_CADASTRO.text = await DBQuerys().buscaNomeUnidade(list['ID_UNIDADE']); print(list); if(CNS_PROFISSIONAL == 999999999999999 || CNS_PROFISSIONAL == '999999999999999'){ CNS_VALIDO = true; } }); }); List list = await DBQuerys().buscaDadosProfissional(idUnidade,idUsuario); for(int i=0; list.length > i;i++){ INE_RESP_CADASTRO = 'INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}'; listINEPROF.add('INE: ${list[i]['INE']} / Área: ${list[i]['AREA']} ${list[i]['MICROAREA']==null?'':'- Microárea : ${list[i]['MICROAREA']}'}'); } setState(() {}); } checkSave()async{ // adicionar depois e usar um usuário real // CBO_RESP_CADASTRO //ok if(TIPO_IMOVEL==null || DT_CADASTRO.text.isEmpty ){ print('erro'); setState(() { showCheckError = true; mandatory = true; }); }else{ print('passou'); mandatory = false; showCheckError = false; setState(() {}); saveCitizenHome(); } } saveCitizenHome()async{ //save final f = new DateFormat('yyyy-MM-dd HH:mm:ss'); Map rowCitizen = { 'PROFISSAO' : PROFISSAO.text.trim(), 'RENDA_TOTAL_FAMILIAR' : double.parse(RENDA_TOTAL_FAMILIAR.text.trim().replaceAll('.','').replaceAll(',', '.')), 'MODELO_VEICULO' : MODELO_VEICULO.text.trim(), 'ANO_VEICULO' : int.parse(ANO_VEICULO.text.trim().replaceAll('.', '')), 'VALOR_PARCELA_FINANCIAMENTO' : VALOR_PARCELA_FINANCIAMENTO.text.trim().replaceAll('.','').replaceAll(',', '.'), 'VALOR_PARCELA_EMPRESTIMO' : VALOR_PARCELA_EMPRESTIMO.text.trim().replaceAll('.','').replaceAll(',', '.'), 'RENDA_MENSAL' : RENDA_MENSAL.text.trim().replaceAll('.','').replaceAll(',', '.'), 'POSSUI_VEICULO' : POSSUI_VEICULO?'S':'N', 'POSSUI_FINANCIAMENTO' : POSSUI_FINANCIAMENTO?'S':'N', 'POSSUI_EMPRESTIMO' : POSSUI_EMPRESTIMO?'S':'N', 'DT_HORA_CADASTRO' : '${f.format(DateTime.now())}', 'ORIGEM' : 'A', 'SINCRONIZADO' : 'N', }; RegExp regex = RegExp(r'INE:\s*(\d+)'); String? ineNumber = regex.firstMatch(INE!)?.group(1); int ID_UNIDADE = 0; for (int i = 0; listaINE.length > i; i++) { if (listaINE[i]['INE'] == ineNumber) { ID_EQUIPE = listaINE[i]['ID_EQUIPE']; INE_DB = listaINE[i]['INE']; ID_UNIDADE = listaINE[i]['ID_UNIDADE']; print(listaINE[i]); } } var CNES_UNIDADE = await DBQuerys().cnesUnidade(ID_UNIDADE); Map rowHome = { 'TIPO_IMOVEL' : TIPO_IMOVEL_COD, 'ID_AREA_DOMICILIO' : ID_AREA_DOMICILIO, 'ID_MICROAREA_DOMICILIO' : ID_MICROAREA_DOMICILIO, 'FORA_AREA' : FORA_AREA?1:2, 'SITUACAO_MORADIA' : SITUACAO_MORADIA_COD, 'TIPO_LOCALIDADE' : TIPO_LOCALIDADE_COD, 'TIPO_DOMICILIO' : TIPO_DOMICILIO_COD, 'NUM_MORADORES' : int.parse(NUM_MORADORES.text), 'NUM_COMODOS' : NUM_COMODOS.text.isEmpty?0:int.parse(NUM_COMODOS.text), 'SITUACAO_RURAL' : SITUACAO_RURAL_COD, 'TIPO_ACESSO' : TIPO_ACESSO_COD, 'MAT_PREDOMINANTE' : MAT_PREDOMINANTE_COD, 'DISPONIBILIDADE_ENERGIA' : DISPONIBILIDADE_ENERGIA?1:2, 'TIPO_ABASTECIMENTO' : TIPO_ABASTECIMENTO_COD, 'TRATAMENTO_AGUA' : TRATAMENTO_AGUA_COD, 'DESTINO_LIXO' : DESTINO_LIXO_COD, 'ESCOAMENTO' : ESCOAMENTO_COD, 'FL_ANIMAIS' : FL_ANIMAIS?1:2, 'ANIMAIS_GATO' : ANIMAIS_GATO?1:2, 'ANIMAIS_CACHORRO' : ANIMAIS_CACHORRO?1:2, 'ANIMAIS_PASSARO' : ANIMAIS_PASSARO?1:2, 'ANIMAIS_OUTROS' : ANIMAIS_OUTROS?1:2, 'QTDE_ANIMAIS' : QTDE_ANIMAIS.text.isEmpty?0:int.parse(QTDE_ANIMAIS.text), 'CBO_RESP_CADASTRO' : CBO_RESP_CADASTRO, 'ID_RESP_CADASTRO' : ID_RESP_CADASTRO, 'CNES_RESP_CADASTRO' : CNES_UNIDADE, 'INE_RESP_CADASTRO' : INE_DB, 'DT_CADASTRO' : date_cad, 'ID_EQUIPE' : ID_EQUIPE, 'ORIGEM' : 'A', 'SINCRONIZADO' : 'N', 'NOME_INSTITUICAO_PERMANENCIA': NOME_INSTITUICAO_PERMANENCIA, 'PROFISSIONAIS_VINCULADOS_INST': PROFISSIONAIS_VINCULADOS_INST, 'RESPONSAVEL_TECNICO_INST' : RESPONSAVEL_TECNICO_INST, 'CARGO_RESP_TECNICO_INST' : CARGO_RESP_TECNICO_INST, 'TEL_RESP_TECNICO_INST' : TEL_RESP_TECNICO_INST, }; await DbSqliteSync().insertCadastrosDomiciliares(rowHome,TIPO_SALVAR,ID_DOMICILIO,ID_CIDADAO,CD_USUARIO_SUS).then((value)async{ await DbSqliteSync().insertCidadaos(rowCitizen,editing?'update':'new',widget.listData[0]['CD_USUARIO_SUS']).then((value){ AlertDialogDefault().alert( context, 'Aviso', TIPO_SALVAR!='new'? 'Cadastro Domiciliar alterado com sucesso!': 'Cadastro Domiciliar realizado com sucesso!', 'OK' ); Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context)=>HomeScreen(username: widget.username)), (route) => false); // print(value); }); }); } @override void initState() { super.initState(); getUser(); } @override Widget build(BuildContext context) { double heigth = MediaQuery.of(context).size.height; double width = MediaQuery.of(context).size.width; return WillPopScope( onWillPop: ()async => await OnBackButton().onBackButton(context, widget.username), child: Scaffold( appBar: AppBarDefault().appbar(context, 'RKM AB - Cadastro Domiciliar',widget.username), body: Container( height: double.infinity, width: double.infinity, decoration: ConstVariable().backgroundGradient, child: ListView( children: [ SubtitleAppbarCitizen(title: 3,edit: true,listData: widget.listData,username: widget.username), showCheckError?Card( margin: EdgeInsets.all(10), child: Container( padding: EdgeInsets.all(10), child: Row( children: [ Icon(Icons.warning,color: Colors.red,), TextDefault(text: 'Existem campos obrigatórios não preenchidos.',color: ColorPalette.red,fontSize: 15,) ], ), ), color: ColorPalette.white, ):Container(), Card( margin: EdgeInsets.all(10), child: Padding( padding: const EdgeInsets.all(8.0), child: Column( children: [ !edit?ButtonDefault( onPressed: (){ setState(() { edit = true; editing = true; }); }, title: 'Alterar', borderColor: ColorPalette.edit, background: ColorPalette.edit, textColor: ColorPalette.white, width: double.infinity, ):ButtonDefault( onPressed: ()=>checkSave(), title: 'Salvar', borderColor: ColorPalette.appBar, background: ColorPalette.appBar, textColor: ColorPalette.white, width: double.infinity, ), ButtonDefault( onPressed: ()=>Navigator.pop(context), title: 'Cancelar', borderColor: ColorPalette.blackButton, background: ColorPalette.blackButton, textColor: ColorPalette.white, width: double.infinity, ) ], ), ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Condições de Moradia'), Row( children: [ Container( height: heigth*0.5, width: width*0.2, child: Icon(Icons.home,size: 80,), ), Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ DropdownWithSubtitle( list:listTypeHome, widthSubtitle: width*0.7, subtitle: 'Tipo de Imóvel', hintDropdown: 'Tipo de Imóvel', select: TIPO_IMOVEL, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>TIPO_IMOVEL = value!); for (int i = 0; ConstVariable().listTypeHome.length > i; i++) { if (ConstVariable().listTypeHome[i].title == TIPO_IMOVEL) { TIPO_IMOVEL_COD = ConstVariable().listTypeHome[i].cod; } } }, ), TIPO_IMOVEL==null&& mandatory?ErrorDefault():Container(), DropdownWithSubtitle( list:listINE, widthSubtitle: width*0.7, subtitle: 'INE - Área / Microárea do Domicílio', hintDropdown: 'INE - Área / Microárea do Domicílio', select: INE, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: !editing?null: (value){ print(value); setState(()=>INE = value!); RegExp regex = RegExp(r'INE:\s*(\d+)'); String? ineNumber = regex.firstMatch(value)?.group(1); for (int i = 0; listaINE.length > i; i++) { if (listaINE[i]['INE'] == ineNumber) { ID_EQUIPE = listaINE[i]['ID_EQUIPE']; INE_DB = listaINE[i]['INE']; // SITUACAO_MORADIA_COD = ConstVariable().listSituationHome[i].cod; print('ID_EQUIPE $ID_EQUIPE'); print('INE_DB $INE_DB'); } } }, ), SwitchWithSubtitle( width: width*0.7, title: 'Fora de área', value: FORA_AREA, onChanged: !editing?null: (value){ if(value){ INE = null; } setState(()=>FORA_AREA=value); }, ), DropdownWithSubtitle( list:listSituationHome, widthSubtitle: width*0.7, subtitle: 'Situação', hintDropdown: 'Situação', select: SITUACAO_MORADIA, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>SITUACAO_MORADIA = value!); print('modou para $SITUACAO_MORADIA_COD'); print('modou para $SITUACAO_MORADIA'); for (int i = 0; ConstVariable().listSituationHome.length > i; i++) { if (ConstVariable().listSituationHome[i].title == SITUACAO_MORADIA) { SITUACAO_MORADIA_COD = ConstVariable().listSituationHome[i].cod; print('modou para dentro do for $SITUACAO_MORADIA_COD'); } } }, ), DropdownWithSubtitle( list:listTypeLocation, widthSubtitle: width*0.7, subtitle: 'Localização', hintDropdown: 'Localização', select: TIPO_LOCALIDADE, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>TIPO_LOCALIDADE = value!); for (int i = 0; ConstVariable().listTypeLocation.length > i; i++) { if (ConstVariable().listTypeLocation[i].title == TIPO_LOCALIDADE) { TIPO_LOCALIDADE_COD = ConstVariable().listTypeLocation[i].cod; } } }, ), DropdownWithSubtitle( list:listTypeResidence, widthSubtitle: width*0.7, subtitle: 'Tipo de Domicílio', hintDropdown: 'Tipo de Domicílio', select: TIPO_DOMICILIO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>TIPO_DOMICILIO = value!); for (int i = 0; ConstVariable().listTypeResidence.length > i; i++) { if (ConstVariable().listTypeResidence[i].title == TIPO_DOMICILIO) { TIPO_DOMICILIO_COD = ConstVariable().listTypeResidence[i].cod; } } }, ), InputWithSubtitle( subtitle: 'Moradores', hintInput: 'Moradores', errorInput: 'Campo obrigatório', labelInput: 'Moradores', widthSubtitle: width*0.4, widthInput: width*0.7, controller: NUM_MORADORES, mandatory: false, enabled: editing, onChanged: (v)=>setState((){}), ), InputWithSubtitle( subtitle: 'Cômodos', hintInput: 'Cômodos', errorInput: 'Campo obrigatório', labelInput: 'Cômodos', widthSubtitle: width*0.4, widthInput: width*0.7, controller: NUM_COMODOS, mandatory: false, enabled: editing, onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( list:listSituationRural, widthSubtitle: width*0.7, subtitle: 'Situação Rural', hintDropdown: 'Situação Rural', select: SITUACAO_RURAL, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>SITUACAO_RURAL = value!); for (int i = 0; ConstVariable().listSituationRural.length > i; i++) { if (ConstVariable().listSituationRural[i].title == SITUACAO_RURAL) { SITUACAO_RURAL_COD = ConstVariable().listSituationRural[i].cod; } } }, ), DropdownWithSubtitle( list:listTypeAcessHome, widthSubtitle: width*0.7, subtitle: 'Tipo de Acesso ao Domicílio', hintDropdown: 'Tipo de Acesso ao Domicílio', select: TIPO_ACESSO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: !editing?null: (value){ setState(()=>TIPO_ACESSO = value!); for (int i = 0; ConstVariable().listTypeAcessHome.length > i; i++) { if (ConstVariable().listTypeAcessHome[i].title == TIPO_ACESSO) { TIPO_ACESSO_COD = ConstVariable().listTypeAcessHome[i].cod; } } }, ), DropdownWithSubtitle( list:listMaterialHome, widthSubtitle: width*0.7, subtitle: 'Material Predominante - Parede', hintDropdown: 'Material Predominante - Parede', select: MAT_PREDOMINANTE, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: !editing?null: (value){ setState(()=>MAT_PREDOMINANTE = value!); for (int i = 0; ConstVariable().listMaterialHome.length > i; i++) { if (ConstVariable().listMaterialHome[i].title == MAT_PREDOMINANTE) { MAT_PREDOMINANTE_COD = ConstVariable().listMaterialHome[i].cod; } } }, ), SwitchWithSubtitle( width: width*0.7, title: 'Disponibilidade de Energia Elétrica', value: DISPONIBILIDADE_ENERGIA, onChanged:!editing?null: (value)=>setState(()=>DISPONIBILIDADE_ENERGIA = value), ), DropdownWithSubtitle( list:listWaterHome, widthSubtitle: width*0.7, subtitle: 'Abastecimento de Água', hintDropdown: 'Abastecimento de Água', select: TIPO_ABASTECIMENTO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged: !editing?null:(value){ setState(()=>TIPO_ABASTECIMENTO = value!); for (int i = 0; ConstVariable().listWaterHome.length > i; i++) { if (ConstVariable().listWaterHome[i].title == TIPO_ABASTECIMENTO) { TIPO_ABASTECIMENTO_COD = ConstVariable().listWaterHome[i].cod; } } }, ), DropdownWithSubtitle( list:listWaterTreatment, widthSubtitle: width*0.7, subtitle: 'Tratamento de Água', hintDropdown: 'Tratamento de Água', select: TRATAMENTO_AGUA, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>TRATAMENTO_AGUA = value!); for (int i = 0; ConstVariable().listWaterTreatment.length > i; i++) { if (ConstVariable().listWaterTreatment[i].title == TRATAMENTO_AGUA) { TRATAMENTO_AGUA_COD = ConstVariable().listWaterTreatment[i].cod; } } }, ), DropdownWithSubtitle( list:listDestinyTrash, widthSubtitle: width*0.7, subtitle: 'Destino de Lixo', hintDropdown: 'Destino de Lixo', select: DESTINO_LIXO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>DESTINO_LIXO = value!); for (int i = 0; ConstVariable().listDestinyTrash.length > i; i++) { if (ConstVariable().listDestinyTrash[i].title == DESTINO_LIXO) { DESTINO_LIXO_COD = ConstVariable().listDestinyTrash[i].cod; } } }, ), DropdownWithSubtitle( list:listSanitary, widthSubtitle: width*0.7, subtitle: 'Forma de Escoamento Sanitário', hintDropdown: 'Forma de Escoamento Sanitário', select: ESCOAMENTO, widthDropdown: width*0.7, widthContainerDropdown: width*0.6, onChanged:!editing?null: (value){ setState(()=>ESCOAMENTO = value!); for (int i = 0; ConstVariable().listSanitary.length > i; i++) { if (ConstVariable().listSanitary[i].title == ESCOAMENTO) { ESCOAMENTO_COD = ConstVariable().listSanitary[i].cod; } } }, ), SwitchWithSubtitle( width: width*0.7, title: 'Animais', value: FL_ANIMAIS, onChanged: !editing?null: (value)=>setState(()=>FL_ANIMAIS = value!), ), SwitchWithSubtitle( width: width*0.7, title: 'Quais - Gato', value: ANIMAIS_GATO, onChanged: !editing || !FL_ANIMAIS?null: (value)=>setState(()=>ANIMAIS_GATO = value!), ), SwitchWithSubtitle( width: width*0.7, title: 'Quais - Cachorro', value: ANIMAIS_CACHORRO, onChanged:!editing || !FL_ANIMAIS?null: (value)=>setState(()=>ANIMAIS_CACHORRO = value!), ), SwitchWithSubtitle( width: width*0.7, title: 'Quais - Pássaro', value: ANIMAIS_PASSARO, onChanged: !editing || !FL_ANIMAIS?null: (value)=>setState(()=>ANIMAIS_PASSARO = value!), ), SwitchWithSubtitle( width: width*0.7, title: 'Quais - Outros', value: ANIMAIS_OUTROS, onChanged: !editing || !FL_ANIMAIS?null: (value)=>setState(()=>ANIMAIS_OUTROS = value!), ), InputWithSubtitle( subtitle: 'Quantidade', hintInput: 'Quantidade', errorInput: 'Campo obrigatório', labelInput: 'Quantidade', widthSubtitle: width*0.4, widthInput: width*0.7, controller: QTDE_ANIMAIS, mandatory: false, enabled: editing && FL_ANIMAIS, onChanged: (v)=>setState((){}), ), ], ) ], ) ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Profissional Responsável'), Row( children: [ Container( height: heigth*0.4, width: width*0.2, child: Icon(Icons.business_center,size: 80,), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 0.0), child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ InputWithSubtitle( controller: NOME_RESP_CADASTRO, subtitle: 'Usuário responsável Pelo Cadastro', errorInput: 'Campo Obrigatório', labelInput: 'Usuário responsável Pelo Cadastro', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: false, onChanged: (v)=>setState((){}), ), InputWithSubtitle( controller: CNES_RESP_CADASTRO, subtitle: 'Unidade do Profissional', errorInput: 'Campo Obrigatório', labelInput: 'Unidade do Profissional', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: false, onChanged: (v)=>setState((){}), ), DropdownWithSubtitle( subtitle: 'CBO', select: CBO_RESP_CADASTRO, widthDropdown: width*0.673, widthContainerDropdown: width*0.5, widthSubtitle: width*0.3, hintDropdown: 'CBO', onChanged:!editing?null: (value)=>setState(()=>CBO_RESP_CADASTRO = value), list: listCBO ), DropdownWithSubtitle( subtitle: 'Código da Equipe', select: INE_RESP_CADASTRO, widthDropdown: width*0.672, widthContainerDropdown: width*0.5, widthSubtitle: width*0.3, hintDropdown: 'Código da Equipe', onChanged:!editing?null: (value){ setState(() { INE_RESP_CADASTRO = value; }); }, list: listINEPROF ), GestureDetector( onTap:!edit?null: ()=>escolherprazoInicio(context), child: InputWithSubtitle( controller: DT_CADASTRO, subtitle: 'Data do Cadastro', errorInput: 'Campo Obrigatório!', labelInput: 'Data do Cadastro', widthInput: width*0.7, widthSubtitle: width*0.7, hintInput: 'Escreva aqui', enabled: false, mandatory: mandatory, onChanged: (v)=>setState((){}), ), ), DT_CADASTRO.text.isEmpty&& mandatory?ErrorDefault():Container(), ], ), ), ] ), ], ), ), Card( margin: EdgeInsets.all(10), child: Column( children: [ TitleContainers(title: 'Outros'), Row( children: [ Container( height: heigth*0.4, width: width*0.2, child: Icon(Icons.tag,size: 80,), ), Padding( padding: const EdgeInsets.symmetric(horizontal: 0.0), child: Column( mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ Row( children: [ Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), InputWithSubtitle( controller: RENDA_MENSAL, subtitle: 'Renda Mensal', errorInput: 'Campo Obrigatório', labelInput: 'Renda Mensal', widthInput: width*0.65, widthSubtitle: width*0.65, hintInput: 'Escreva aqui', enabled: editing, onChanged: (v)=>setState((){}), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), InputWithSubtitle( controller: PROFISSAO, subtitle: 'Profissão', errorInput: 'Campo Obrigatório', labelInput: 'Profissão', widthInput: width*0.65, widthSubtitle: width*0.65, hintInput: 'Escreva aqui', enabled: editing, onChanged: (v)=>setState((){}), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), InputWithSubtitle( textInputType: TextInputType.number, controller: RENDA_TOTAL_FAMILIAR, subtitle: 'Renda Total Familiar', errorInput: 'Campo Obrigatório', labelInput: 'Renda Total Familiar', widthInput: width*0.65, widthSubtitle: width*0.65, hintInput: 'Escreva aqui', enabled: editing, onChanged: (v)=>setState((){}), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), SwitchWithSubtitle( width: width*0.65, title: 'Possui Veículo Próprio', value: POSSUI_VEICULO, onChanged: !editing?null: (value)=>setState(()=>POSSUI_VEICULO = value!), ), ], ), Container( width: width*0.7, child: Row( children: [ Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), InputWithSubtitle( controller: MODELO_VEICULO, subtitle: 'Modelo Veículo', errorInput: 'Campo Obrigatório', labelInput: 'Modelo Veículo', widthInput: width*0.53, widthSubtitle: width*0.53, hintInput: 'Escreva aqui', enabled: editing && POSSUI_VEICULO, onChanged: (v)=>setState((){}), ), Spacer(), InputWithSubtitle( controller: ANO_VEICULO, subtitle: 'Ano Veículo', errorInput: 'Campo Obrigatório', labelInput: 'Ano Veículo', widthInput: width*0.1, widthSubtitle: width*0.1, hintInput: 'Escreva aqui', enabled: editing && POSSUI_VEICULO, onChanged: (v)=>setState((){}), ), ], ), ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), SwitchWithSubtitle( width: width*0.65, title: 'Possui Financiamento', value: POSSUI_FINANCIAMENTO, onChanged: !editing?null: (value)=>setState(()=>POSSUI_FINANCIAMENTO = value!), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), InputWithSubtitle( controller: VALOR_PARCELA_FINANCIAMENTO, subtitle: 'Valor Parcela Financiamento', errorInput: 'Campo Obrigatório', labelInput: 'Valor Parcela Financiamento', widthInput: width*0.65, widthSubtitle: width*0.65, hintInput: 'Escreva aqui', enabled: editing && POSSUI_FINANCIAMENTO, onChanged: (v)=>setState((){}), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: '',color: Colors.black87)), SwitchWithSubtitle( width: width*0.65, title: 'Possui Veículo Empréstimo', value: POSSUI_EMPRESTIMO, onChanged: !editing?null: (value)=>setState(()=>POSSUI_EMPRESTIMO = value!), ), ], ), Row( children: [ Container(width: width*0.05,child: TextDefault(text: 'R\$',color: Colors.black87)), InputWithSubtitle( controller: VALOR_PARCELA_EMPRESTIMO, subtitle: 'Valor Parcela Empréstimo', errorInput: 'Campo Obrigatório', labelInput: 'Valor Parcela Empréstimo', widthInput: width*0.65, widthSubtitle: width*0.65, hintInput: 'Escreva aqui', enabled: editing && POSSUI_EMPRESTIMO, onChanged: (v)=>setState((){}), ), ], ), ], ), ), ] ), ], ), ), CNS_VALIDO?Card( margin: EdgeInsets.all(10), child: Container( padding: const EdgeInsets.all(8.0), width: width, height: heigth*0.1, child: Row( children: [ Icon(Icons.warning,color: ColorPalette.red,), Container( width: width*0.9, child: TextDefault( text: 'CNS do Profissional inválido. Este cadastro não será exportado para o e-SUS.', fontSize: 15, maxLines: 2, color: ColorPalette.red, ), ), ], ), ), ):Container() ] ) ), ), ); } }