From 51711e689b0cbe001594411d24824e882a1532b7 Mon Sep 17 00:00:00 2001 From: Reginaldo Date: Mon, 12 Feb 2024 17:01:57 -0300 Subject: [PATCH] =?UTF-8?q?ajuste=20no=20cbo,=20pesquisa=20e=20valida?= =?UTF-8?q?=C3=A7=C3=A3o=20do=20home=5Fvisit=5Fscreen.dart?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../select_service/home_visit_screen.dart | 68 ++++++++------ lib/widgets/alert_dialog_default.dart | 14 +-- lib/widgets/dropdown_button_com_pesquisa.dart | 70 +++++++++++++++ lib/widgets/dropdown_button_default.dart | 4 +- pubspec.lock | 90 ++++++++++++++++++- pubspec.yaml | 1 + 6 files changed, 213 insertions(+), 34 deletions(-) create mode 100644 lib/widgets/dropdown_button_com_pesquisa.dart diff --git a/lib/screens/select_service/home_visit_screen.dart b/lib/screens/select_service/home_visit_screen.dart index 8297bde..a75cc06 100644 --- a/lib/screens/select_service/home_visit_screen.dart +++ b/lib/screens/select_service/home_visit_screen.dart @@ -3,6 +3,7 @@ import 'package:flutter/services.dart'; import 'package:intl/intl.dart'; import 'package:line_icons/line_icons.dart'; import 'package:rkm/screens/home_screen.dart'; +import 'package:sqflite/sqflite.dart'; import '../../config/color_palette.dart'; import '../../config/const_variable.dart'; import '../../models/check_model.dart'; @@ -124,14 +125,25 @@ class _HomeVisitScreenState extends State { CNES_UNIDADE.text = value[1]; } }); - 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()); - } + Database dbcbo = await DbSqliteLoad().intialDB(); + var query = 'SELECT * FROM PROFISSIONAIS_CBOS WHERE ID_PROFISSIONAL = $idUsuario'; + List listcbo = await dbcbo.rawQuery(query); + + if(listcbo.length!=0){ + for(int i = 0; listcbo.length>i;i++){ + await DBQuerys().buscaCBOSProfissional(listcbo[i]['CODIGO_CBO']).then((cbo)async{ + if(cbo.length!=0){ + listCBO.add(cbo[0]['DESCRICAO_CBO']+' - '+listcbo[i]['CODIGO_CBO'].toString()); + } + }); } - setState(() {}); - }); + } + + var querycbo = 'SELECT * FROM CBOS WHERE CODIGO_CBO = 223208'; + // var query = 'SELECT * FROM PROFISSIONAIS_CBOS'; + List listcbocompleta = await dbcbo.rawQuery(querycbo); + print(listcbocompleta); + 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']} - Microárea : ${list[i]['MICROAREA']}'; @@ -150,7 +162,7 @@ class _HomeVisitScreenState extends State { setState(() {}); } - loadLists() { + loadLists()async { for (int i = 0; ConstVariable().typeTurnService.length > i; i++) { typeTurnService.add(ConstVariable().typeTurnService[i].title); } @@ -181,7 +193,7 @@ class _HomeVisitScreenState extends State { // adicionar depois e usar um usuário real // CBO_RESP_CADASTRO //ok - if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 + if(date.isEmpty || dateDB.isEmpty || TIPO_IMOVEL_COD==0 || DESFECHO_COD ==0 || TURNO_COD == 0 || CBO_PROFISSIONAL == null ){ print('erro'); setState(() { @@ -818,23 +830,27 @@ class _HomeVisitScreenState extends State { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: const EdgeInsets.symmetric(horizontal: 10.0), - child: Container( - width: width*0.7, - child: Row( - children: [ - TextDefault(text: 'Procedimento',color: Colors.black,), - Spacer(), - IconButton( - icon: Icon(Icons.add_circle,color: ColorPalette.blackButton), - onPressed: (){ - AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); - }, - ) - ], - ), - ) + GestureDetector( + onTap: ()=>AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc), + child: Container( + padding: const EdgeInsets.symmetric(horizontal: 10.0), + child: Container( + height: 200, + width: width*0.7, + child: Row( + children: [ + TextDefault(text: 'Procedimento',color: Colors.black,), + Spacer(), + IconButton( + icon: Icon(Icons.add_circle,color: ColorPalette.blackButton), + onPressed: (){ + AlertDialogDefault().otherProc(context, 'Outros Procedimentos', 'Adicionar Procedimento', CBO_PROFISSIONAL, CBO_PROFISSIONAL, 'add',PROCEDIMENTOS_SIGTAP,listProc); + }, + ) + ], + ), + ) + ), ) ] ) diff --git a/lib/widgets/alert_dialog_default.dart b/lib/widgets/alert_dialog_default.dart index 23c7bf6..b48d5ff 100644 --- a/lib/widgets/alert_dialog_default.dart +++ b/lib/widgets/alert_dialog_default.dart @@ -9,6 +9,7 @@ import 'package:rkm/screens/select_service/service_dental_screen.dart'; import 'package:rkm/screens/select_service/service_home_screen.dart'; import 'package:rkm/screens/select_service/service_individual_screen.dart'; import 'package:rkm/widgets/button_default.dart'; +import 'package:rkm/widgets/dropdown_button_com_pesquisa.dart'; import 'package:rkm/widgets/switch_with_subtitle.dart'; import 'package:rkm/widgets/text_default.dart'; import 'package:rkm/widgets/title_containers.dart'; @@ -462,7 +463,6 @@ class AlertDialogDefault { ) { double width = MediaQuery.of(context).size.width; - double height = MediaQuery.of(context).size.height; return showDialog( context: context, @@ -490,14 +490,17 @@ class AlertDialogDefault { mainAxisSize: MainAxisSize.min, children: [ TitleContainers(title: subtitle), - DropDownButtonDefault( + DropDownButtonComPesquisa( onChanged: (value)=>setState((){ selectProfessionals=value; + listProc.add(selectProfessionals); + setState((){}); }), select: selectProfessionals, - title: 'Procedimento', + title: '', list: list, - width: width + width: width*0.8, + widthContainer: width*0.75, ), ButtonDefault( onPressed:(){ @@ -522,10 +525,11 @@ class AlertDialogDefault { list.length!=0 ?Container( width: width*0.8, - height: height*0.4, + height: listProc.length*70, child: ListView.builder( itemCount: listProc.length, itemBuilder: (context,index) { + print(listProc.length); return Container( width: width * 0.8, padding: EdgeInsets.all(10), diff --git a/lib/widgets/dropdown_button_com_pesquisa.dart b/lib/widgets/dropdown_button_com_pesquisa.dart new file mode 100644 index 0000000..cdb1f14 --- /dev/null +++ b/lib/widgets/dropdown_button_com_pesquisa.dart @@ -0,0 +1,70 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_typeahead/flutter_typeahead.dart'; +import 'package:rkm/widgets/text_default.dart'; +import '../config/color_palette.dart'; +import '../config/const_variable.dart'; +import 'input_search_text.dart'; + +class DropDownButtonComPesquisa extends StatelessWidget { + var onChanged; + String? select; + String title; + double fontSize; + List list; + double width; + double heightDinamic; + double widthContainer; + + DropDownButtonComPesquisa({ + required this.onChanged, + required this.select, + required this.title, + required this.list, + required this.width, + this.heightDinamic = 0.2, + this.fontSize = 15, + this.widthContainer = 300, +}); + + @override + Widget build(BuildContext context) { + + double height = MediaQuery.of(context).size.height; + + return + Container( + width: width, + height: height*heightDinamic, + margin: ConstVariable().marginHightInput, + color: ColorPalette.white, + child: ListView( + shrinkWrap: true, + children: [ + TypeAheadField( + controller: TextEditingController(), + hideOnEmpty: false, + suggestionsCallback: (pattern) { + if (list != null) { + // Use toList() para converter o resultado do where em uma lista + return list.where((value) => value.toLowerCase().contains(pattern.toLowerCase())).toList(); + } else { + return Future.value([]); // Retorna uma lista vazia como um Future + } + }, + emptyBuilder: (context) { + return ListTile( + title: Text('Nenhum resultado encontrado'), + ); + }, + itemBuilder: (context, dynamic suggestion) { + return ListTile( + title: Text(suggestion), + ); + }, + onSelected: onChanged, + ), + ], + ), + ); + } +} diff --git a/lib/widgets/dropdown_button_default.dart b/lib/widgets/dropdown_button_default.dart index fb420e9..874d879 100644 --- a/lib/widgets/dropdown_button_default.dart +++ b/lib/widgets/dropdown_button_default.dart @@ -20,7 +20,7 @@ class DropDownButtonDefault extends StatelessWidget { required this.width, this.fontSize = 15, this.widthContainer = 300 -}); + }); @override Widget build(BuildContext context) { @@ -61,4 +61,4 @@ class DropDownButtonDefault extends StatelessWidget { ], ); } -} +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 06f7355..ea6e965 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -126,6 +126,54 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_keyboard_visibility: + dependency: transitive + description: + name: flutter_keyboard_visibility + sha256: "98664be7be0e3ffca00de50f7f6a287ab62c763fc8c762e0a21584584a3ff4f8" + url: "https://pub.dev" + source: hosted + version: "6.0.0" + flutter_keyboard_visibility_linux: + dependency: transitive + description: + name: flutter_keyboard_visibility_linux + sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_macos: + dependency: transitive + description: + name: flutter_keyboard_visibility_macos + sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 + url: "https://pub.dev" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_platform_interface: + dependency: transitive + description: + name: flutter_keyboard_visibility_platform_interface + sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_web: + dependency: transitive + description: + name: flutter_keyboard_visibility_web + sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1 + url: "https://pub.dev" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_windows: + dependency: transitive + description: + name: flutter_keyboard_visibility_windows + sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 + url: "https://pub.dev" + source: hosted + version: "1.0.0" flutter_lints: dependency: "direct dev" description: @@ -144,6 +192,14 @@ packages: description: flutter source: sdk version: "0.0.0" + flutter_typeahead: + dependency: "direct main" + description: + name: flutter_typeahead + sha256: d64712c65db240b1057559b952398ebb6e498077baeebf9b0731dade62438a6d + url: "https://pub.dev" + source: hosted + version: "5.2.0" flutter_web_plugins: dependency: transitive description: flutter @@ -301,6 +357,38 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.8" + pointer_interceptor: + dependency: transitive + description: + name: pointer_interceptor + sha256: bd18321519718678d5fa98ad3a3359cbc7a31f018554eab80b73d08a7f0c165a + url: "https://pub.dev" + source: hosted + version: "0.10.1" + pointer_interceptor_ios: + dependency: transitive + description: + name: pointer_interceptor_ios + sha256: "2e73c39452830adc4695757130676a39412a3b7f3c34e3f752791b5384770877" + url: "https://pub.dev" + source: hosted + version: "0.10.0+2" + pointer_interceptor_platform_interface: + dependency: transitive + description: + name: pointer_interceptor_platform_interface + sha256: "0597b0560e14354baeb23f8375cd612e8bd4841bf8306ecb71fcd0bb78552506" + url: "https://pub.dev" + source: hosted + version: "0.10.0+1" + pointer_interceptor_web: + dependency: transitive + description: + name: pointer_interceptor_web + sha256: "9386e064097fd16419e935c23f08f35b58e6aaec155dd39bd6a003b88f9c14b4" + url: "https://pub.dev" + source: hosted + version: "0.10.1+2" pointycastle: dependency: transitive description: @@ -492,4 +580,4 @@ packages: version: "1.0.0" sdks: dart: ">=3.2.3 <4.0.0" - flutter: ">=3.10.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index bb34a33..f1d3b00 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -21,6 +21,7 @@ dependencies: shared_preferences: ^2.0.15 get: brasil_fields: + flutter_typeahead: ^5.2.0 flutter_localizations: sdk: flutter