criado o modelo city_load_model.dart a tela login_load_screen.dart e sync_unit_screen.dart
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.ab.rkm.rkm">
|
||||
<application
|
||||
android:label="rkm"
|
||||
android:label="RKMAB"
|
||||
android:name="${applicationName}"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
<activity
|
||||
|
||||
BIN
assets/images/load-done.png
Normal file
BIN
assets/images/load-done.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
@@ -1,13 +1,15 @@
|
||||
import 'city_load_model.dart';
|
||||
|
||||
class ArgsLoadInitModel{
|
||||
String mode;
|
||||
String city;
|
||||
CityLoadModel model;
|
||||
String user;
|
||||
String password;
|
||||
String urlAPI;
|
||||
|
||||
ArgsLoadInitModel({
|
||||
required this.mode,
|
||||
required this.city,
|
||||
required this.model,
|
||||
required this.user,
|
||||
required this.password,
|
||||
required this.urlAPI,
|
||||
|
||||
15
lib/models/city_load_model.dart
Normal file
15
lib/models/city_load_model.dart
Normal file
@@ -0,0 +1,15 @@
|
||||
class CityLoadModel{
|
||||
int codCity;
|
||||
String nameCityApi;
|
||||
String nameCityFront;
|
||||
String codState;
|
||||
int codCityIbge;
|
||||
|
||||
CityLoadModel({
|
||||
required this.codCity,
|
||||
required this.nameCityApi,
|
||||
required this.nameCityFront,
|
||||
required this.codState,
|
||||
required this.codCityIbge,
|
||||
});
|
||||
}
|
||||
@@ -1,11 +1,12 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rkm/screens/sync_unit_screen.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
import 'package:rkm/widgets/alert_dialog_default.dart';
|
||||
import 'package:rkm/widgets/button_default.dart';
|
||||
import 'package:rkm/widgets/text_default.dart';
|
||||
import '../models/args_load_init_model.dart';
|
||||
import '../service/api/api_data.dart';
|
||||
import '../service/db/db_sqlite.dart';
|
||||
import '../utils/const_variable.dart';
|
||||
|
||||
class LoadInitScreen extends StatefulWidget {
|
||||
ArgsLoadInitModel args;
|
||||
@@ -21,20 +22,12 @@ class LoadInitScreen extends StatefulWidget {
|
||||
class _LoadInitScreenState extends State<LoadInitScreen> {
|
||||
|
||||
String messageSteps = 'Aguarde ...';
|
||||
bool finish = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
// initLoading();
|
||||
finishLoad();
|
||||
}
|
||||
|
||||
finishLoad()async{
|
||||
await ApiData().loadCompetencia(widget.args).then((value)async{
|
||||
await DbSqlite().saveCompetence(value,widget.args).then((value)async{
|
||||
Navigator.pushReplacementNamed(context, '/home');
|
||||
});
|
||||
});
|
||||
initLoading();
|
||||
}
|
||||
|
||||
initLoading()async{
|
||||
@@ -105,7 +98,10 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
|
||||
print('loadEquipeComponentes');
|
||||
await DbSqlite().saveTeamComponents(value).then((value)async{
|
||||
print('finalizou saveTeamComponents');
|
||||
finishLoad();
|
||||
setState(() {
|
||||
finish = true;
|
||||
});
|
||||
// Navigator.pushReplacementNamed(context, '/home');
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -147,12 +143,34 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
|
||||
width: width,
|
||||
height: height*0.05,
|
||||
color: ColorPalette.appBar,
|
||||
padding: EdgeInsets.all(10),
|
||||
child: TextDefault(
|
||||
text: messageSteps,
|
||||
color: ColorPalette.white,
|
||||
maxLines: 2,
|
||||
),
|
||||
child: finish
|
||||
?Row(
|
||||
children: [
|
||||
Spacer(),
|
||||
ButtonDefault(
|
||||
onPressed: (){
|
||||
Navigator.pushReplacement(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => SyncUnitScreen(args: widget.args)),
|
||||
);
|
||||
},
|
||||
title: 'Continuar',
|
||||
width: width*0.3,
|
||||
height: height*0.1,
|
||||
textColor: ColorPalette.white,
|
||||
background: ColorPalette.appBar,
|
||||
borderColor: ColorPalette.appBar,
|
||||
),
|
||||
],
|
||||
)
|
||||
:Padding(
|
||||
padding: const EdgeInsets.all(10.0),
|
||||
child: TextDefault(
|
||||
text: messageSteps,
|
||||
color: ColorPalette.white,
|
||||
maxLines: 2,
|
||||
),
|
||||
),
|
||||
),
|
||||
body: Container(
|
||||
padding: EdgeInsets.all(50),
|
||||
@@ -166,7 +184,12 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
|
||||
),
|
||||
)
|
||||
),
|
||||
child: ListView(
|
||||
child: finish?ListView(
|
||||
children: [
|
||||
Image.asset('assets/images/logo.PNG',width: width*0.3,height: height*0.2,),
|
||||
Image.asset('assets/images/load-done.png',width: width*0.9,height: height*0.2,),
|
||||
],
|
||||
):ListView(
|
||||
children: [
|
||||
Image.asset('assets/images/logo.PNG',width: width*0.2,height: height*0.1,),
|
||||
SizedBox(height: height*0.1),
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:rkm/service/api/url_api_const.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
@@ -9,17 +7,18 @@ import 'package:rkm/widgets/button_default.dart';
|
||||
import 'package:rkm/widgets/dropdown_button_city.dart';
|
||||
import 'package:rkm/widgets/input_text.dart';
|
||||
import 'package:rkm/widgets/text_default.dart';
|
||||
import '../models/city_load_model.dart';
|
||||
import '../service/api/api_data.dart';
|
||||
import '../service/api/encrypt_password.dart';
|
||||
import 'load_init_screen.dart';
|
||||
class LoginScreen extends StatefulWidget {
|
||||
const LoginScreen({Key? key}) : super(key: key);
|
||||
class LoginLoadScreen extends StatefulWidget {
|
||||
const LoginLoadScreen({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
State<LoginScreen> createState() => _LoginScreenState();
|
||||
State<LoginLoadScreen> createState() => _LoginLoadScreenState();
|
||||
}
|
||||
|
||||
class _LoginScreenState extends State<LoginScreen> {
|
||||
class _LoginLoadScreenState extends State<LoginLoadScreen> {
|
||||
|
||||
var inputUser = TextEditingController();
|
||||
var inputPassword = TextEditingController();
|
||||
@@ -33,45 +32,56 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
bool loading = false;
|
||||
|
||||
checkLogin()async{
|
||||
CityLoadModel? model;
|
||||
ArgsLoadInitModel? args;
|
||||
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
|
||||
if(selectCity!=null){
|
||||
setState(() {
|
||||
error = '';
|
||||
loading = true;
|
||||
});
|
||||
ArgsLoadInitModel args = ArgsLoadInitModel(
|
||||
mode: mode,
|
||||
city: selectCity!,
|
||||
user: inputUser.text,
|
||||
password: inputPassword.text,
|
||||
urlAPI: urlAPI
|
||||
);
|
||||
await ApiData().apiConect(args).then((response) async {
|
||||
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
|
||||
setState(() {
|
||||
error = 'Usuário bloqueado/senha incorreta';
|
||||
});
|
||||
}else if(response['status']==0) {
|
||||
setState(() {
|
||||
error = 'Usuário não encontrado';
|
||||
});
|
||||
}else if(response['status']==1) {
|
||||
setState((){
|
||||
error = '';
|
||||
});
|
||||
//verificar se a criptografia identificou se a senha está correta
|
||||
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
|
||||
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
|
||||
setState(() {
|
||||
loading = false;
|
||||
});
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args)),
|
||||
);
|
||||
for(int i=0;ConstVariable().itensCity.length > i;i++){
|
||||
if(ConstVariable().itensCity[i].nameCityFront == selectCity!){
|
||||
model = ConstVariable().itensCity[i];
|
||||
}
|
||||
}
|
||||
});
|
||||
if(model!=null){
|
||||
args = ArgsLoadInitModel(
|
||||
mode: mode,
|
||||
model:model!,
|
||||
user: inputUser.text,
|
||||
password: inputPassword.text,
|
||||
urlAPI: urlAPI
|
||||
);
|
||||
}
|
||||
if(args!=null){
|
||||
await ApiData().apiConect(args!).then((response) async {
|
||||
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
|
||||
setState(() {
|
||||
error = 'Usuário bloqueado/senha incorreta';
|
||||
});
|
||||
}else if(response['status']==0) {
|
||||
setState(() {
|
||||
error = 'Usuário não encontrado';
|
||||
});
|
||||
}else if(response['status']==1) {
|
||||
setState((){
|
||||
error = '';
|
||||
});
|
||||
//verificar se a criptografia identificou se a senha está correta
|
||||
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
|
||||
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
|
||||
setState(() {
|
||||
loading = false;
|
||||
});
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Selecione sua cidade';
|
||||
@@ -84,14 +94,6 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
now = DateFormat('dd/MM/yyyy kk:mm:ss').format(DateTime.now());
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -103,15 +105,6 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
centerTitle: true,
|
||||
title: TextDefault(text: 'RKM AB - Carga Inicial',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white),
|
||||
),
|
||||
// bottomSheet: Container(
|
||||
// color: ColorPalette.secundary,
|
||||
// padding: EdgeInsets.all(8.0),
|
||||
// child: TextDefault(
|
||||
// text: 'Última sincronização $now',
|
||||
// fontSize: 15,
|
||||
// color: ColorPalette.gray,
|
||||
// ),
|
||||
// ),
|
||||
body: SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: height*0.2),
|
||||
@@ -148,8 +141,9 @@ class _LoginScreenState extends State<LoginScreen> {
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
CircularProgressIndicator(),
|
||||
TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,)
|
||||
Image.asset('assets/images/loading.gif'),
|
||||
SizedBox(height: 10),
|
||||
TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,)
|
||||
],
|
||||
),
|
||||
):Form(
|
||||
235
lib/screens/login_saved_screen.dart
Normal file
235
lib/screens/login_saved_screen.dart
Normal file
@@ -0,0 +1,235 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:rkm/service/api/url_api_const.dart';
|
||||
import 'package:rkm/service/db/db_sqlite.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
import 'package:rkm/widgets/button_default.dart';
|
||||
import 'package:rkm/widgets/dropdown_button_city.dart';
|
||||
import 'package:rkm/widgets/input_text.dart';
|
||||
import 'package:rkm/widgets/text_default.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import '../models/city_load_model.dart';
|
||||
import '../service/api/api_data.dart';
|
||||
import '../service/api/encrypt_password.dart';
|
||||
import 'load_init_screen.dart';
|
||||
class LoginSavedScreen extends StatefulWidget {
|
||||
List listControl;
|
||||
|
||||
LoginSavedScreen({
|
||||
required this.listControl
|
||||
});
|
||||
|
||||
@override
|
||||
State<LoginSavedScreen> createState() => _LoginSavedScreenState();
|
||||
}
|
||||
|
||||
class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
|
||||
var inputUser = TextEditingController();
|
||||
var inputPassword = TextEditingController();
|
||||
String error = '';
|
||||
String? now;
|
||||
String? selectCity;
|
||||
bool validatorDropDown= false;
|
||||
int contLogo = 0;
|
||||
String mode = 'homologacao';
|
||||
String urlAPI = UrlApiConst.ModeHomologacao;
|
||||
bool loading = false;
|
||||
|
||||
checkLogin()async{
|
||||
CityLoadModel? model;
|
||||
ArgsLoadInitModel? args;
|
||||
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
|
||||
if(selectCity!=null){
|
||||
setState(() {
|
||||
error = '';
|
||||
loading = true;
|
||||
for(int i=0;ConstVariable().itensCity.length > i;i++){
|
||||
if(ConstVariable().itensCity[i].nameCityFront == selectCity!){
|
||||
model = ConstVariable().itensCity[i];
|
||||
}
|
||||
}
|
||||
});
|
||||
if(model!=null){
|
||||
args = ArgsLoadInitModel(
|
||||
mode: mode,
|
||||
model:model!,
|
||||
user: inputUser.text,
|
||||
password: inputPassword.text,
|
||||
urlAPI: urlAPI
|
||||
);
|
||||
}
|
||||
if(args!=null){
|
||||
await ApiData().apiConect(args!).then((response) async {
|
||||
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
|
||||
setState(() {
|
||||
error = 'Usuário bloqueado/senha incorreta';
|
||||
});
|
||||
}else if(response['status']==0) {
|
||||
setState(() {
|
||||
error = 'Usuário não encontrado';
|
||||
});
|
||||
}else if(response['status']==1) {
|
||||
setState((){
|
||||
error = '';
|
||||
});
|
||||
//verificar se a criptografia identificou se a senha está correta
|
||||
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
|
||||
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
|
||||
setState(() {
|
||||
loading = false;
|
||||
});
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Selecione sua cidade';
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Usuário/senha inválido(s)';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
if(widget.listControl.length!=0){
|
||||
mode = widget.listControl[0]['AMBIENTE'];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
double height = MediaQuery.of(context).size.height;
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
title: TextDefault(text: 'RKM AB - Carga Inicial',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: height*0.1),
|
||||
width: width,
|
||||
height: height,
|
||||
decoration: ConstVariable().backgroundGradient,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
Image.asset('assets/images/logo.PNG',width: width*0.4),
|
||||
mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(),
|
||||
mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(),
|
||||
SizedBox(height: 10),
|
||||
loading?Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Image.asset('assets/images/loading.gif'),
|
||||
SizedBox(height: 10),
|
||||
TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,)
|
||||
],
|
||||
),
|
||||
):Form(
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
child: Container(
|
||||
width: width*0.6,
|
||||
height: height*0.2,
|
||||
child: ListView(
|
||||
children: [
|
||||
InputText(
|
||||
hint: 'Usuário',
|
||||
label: inputUser.text.isNotEmpty?'':'Usuário',
|
||||
error: 'Campo obrigatório',
|
||||
controller: inputUser,
|
||||
width: width*0.6,
|
||||
colorBorder: Colors.white,
|
||||
onChanged: (v)=>setState((){}),
|
||||
),
|
||||
InputText(
|
||||
hint: 'Senha',
|
||||
label: inputPassword.text.isNotEmpty?'':'Senha',
|
||||
error: 'Campo obrigatório',
|
||||
obscure: true,
|
||||
controller: inputPassword,
|
||||
width: width*0.6,
|
||||
colorBorder: Colors.white,
|
||||
onChanged: (v)=>setState((){}),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
loading?Container():ButtonDefault(
|
||||
onPressed: ()=>checkLogin(),
|
||||
title: 'Entrar',
|
||||
width: width*0.6,
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
TextDefault(text: error,color: ColorPalette.red),
|
||||
widget.listControl.length==0?Container():Container(
|
||||
width: width*0.6,
|
||||
child: TextDefault(
|
||||
text: 'Última sincronização: '+DateFormat('dd/MM/yyyy kk:mm:ss').format(DateTime.parse(widget.listControl[0]['ULTIMA_SINCRONIZACAO'])),
|
||||
fontWeigth: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
),
|
||||
widget.listControl.length==0?Container():Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 5),
|
||||
width: width*0.6,
|
||||
child: TextDefault(
|
||||
text: 'Unidade: '+widget.listControl[0]['UNIDADE'].toString(),
|
||||
fontWeigth: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
),
|
||||
widget.listControl.length==0?Container():Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 5),
|
||||
width: width*0.6,
|
||||
child: TextDefault(
|
||||
text: 'Competência: '+widget.listControl[0]['COMPETENCIA'].toString(),
|
||||
fontWeigth: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
),
|
||||
widget.listControl.length==0?Container():Container(
|
||||
padding: EdgeInsets.symmetric(vertical: 5),
|
||||
width: width*0.6,
|
||||
child: TextDefault(
|
||||
text: 'Área: '+widget.listControl[0]['AREA'].toString(),
|
||||
fontWeigth: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
textAlign: TextAlign.center,
|
||||
maxLines: 2,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -297,13 +297,13 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
child: ListTile(
|
||||
onTap: (){
|
||||
setState(() {
|
||||
cityBirthController.text = ConstVariable().itensCity[index];
|
||||
cityBirthController.text = ConstVariable().itensCity[index].nameCityFront;
|
||||
Navigator.pop(context);
|
||||
});
|
||||
},
|
||||
title: TextDefault(
|
||||
color: ColorPalette.black54,
|
||||
text: ConstVariable().itensCity[index],
|
||||
text: ConstVariable().itensCity[index].nameCityFront,
|
||||
fontSize: 16,
|
||||
maxLines: 2,
|
||||
),
|
||||
@@ -572,14 +572,14 @@ class _RegisterCitizenScreenState extends State<RegisterCitizenScreen> {
|
||||
child: ListTile(
|
||||
onTap: (){
|
||||
setState(() {
|
||||
cityController.text = ConstVariable().itensCity[index];
|
||||
codIBGEController.text = '353870';
|
||||
cityController.text = ConstVariable().itensCity[index].nameCityFront;
|
||||
codIBGEController.text = ConstVariable().itensCity[index].codCityIbge.toString();
|
||||
Navigator.pop(context);
|
||||
});
|
||||
},
|
||||
title: TextDefault(
|
||||
color: ColorPalette.black54,
|
||||
text: ConstVariable().itensCity[index],
|
||||
text: ConstVariable().itensCity[index].nameCityFront,
|
||||
fontSize: 16,
|
||||
maxLines: 2,
|
||||
),
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:rkm/models/city_load_model.dart';
|
||||
import 'package:rkm/screens/sync_unit_screen.dart';
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
|
||||
import '../service/db/db_sqlite.dart';
|
||||
import 'login_saved_screen.dart';
|
||||
|
||||
class SplashScreen extends StatefulWidget {
|
||||
const SplashScreen({Key? key}) : super(key: key);
|
||||
@@ -16,16 +19,33 @@ class _SplashScreenState extends State<SplashScreen> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
DbSqlite().intialDB().then((value){
|
||||
|
||||
});
|
||||
DbSqlite().intialDB();
|
||||
timer();
|
||||
}
|
||||
|
||||
timer()async{
|
||||
Future.delayed(Duration(seconds: 3),(){
|
||||
Navigator.pushReplacementNamed(context, '/login');
|
||||
});
|
||||
await DbSqlite().intialDB().then((db)async{
|
||||
List data = await db.query('MUNICIPIOS');
|
||||
if(data.length != 0){
|
||||
var query = "SELECT * FROM CONTROLE_INTERNO";
|
||||
data = await db.rawQuery(query);
|
||||
if(data.length != 0){
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: data)),
|
||||
);
|
||||
}else{
|
||||
CityLoadModel model = CityLoadModel(codCity: 0, nameCityApi: '', nameCityFront: '', codState: '', codCityIbge: 0);
|
||||
ArgsLoadInitModel args = ArgsLoadInitModel(mode: '', model: model, user: '', password: '', urlAPI: '');
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => SyncUnitScreen(args: args)),
|
||||
);
|
||||
}
|
||||
}else{
|
||||
Navigator.pushReplacementNamed(context, '/login_load');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
263
lib/screens/sync_unit_screen.dart
Normal file
263
lib/screens/sync_unit_screen.dart
Normal file
@@ -0,0 +1,263 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:rkm/service/api/url_api_const.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
import 'package:rkm/widgets/button_default.dart';
|
||||
import 'package:rkm/widgets/dropdown_button_city.dart';
|
||||
import 'package:rkm/widgets/dropdown_button_default.dart';
|
||||
import 'package:rkm/widgets/input_text.dart';
|
||||
import 'package:rkm/widgets/text_default.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import '../models/city_load_model.dart';
|
||||
import '../service/api/api_data.dart';
|
||||
import '../service/api/encrypt_password.dart';
|
||||
import '../service/db/db_sqlite.dart';
|
||||
import 'load_init_screen.dart';
|
||||
class SyncUnitScreen extends StatefulWidget {
|
||||
ArgsLoadInitModel args;
|
||||
|
||||
SyncUnitScreen({
|
||||
required this.args
|
||||
});
|
||||
|
||||
@override
|
||||
State<SyncUnitScreen> createState() => _SyncUnitScreenState();
|
||||
}
|
||||
|
||||
class _SyncUnitScreenState extends State<SyncUnitScreen> {
|
||||
|
||||
var inputUser = TextEditingController();
|
||||
var inputPassword = TextEditingController();
|
||||
String error = '';
|
||||
String? now;
|
||||
String? selectUnit;
|
||||
String? selectTeam;
|
||||
bool validatorDropDown= false;
|
||||
int contLogo = 0;
|
||||
String mode = 'desenvolvimento';
|
||||
String urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
|
||||
bool loading = false;
|
||||
List<String> listUnit=[];
|
||||
List searchUnitCodList=[];
|
||||
List listTeam = [];
|
||||
String idUnidade ='';
|
||||
checkLogin()async{
|
||||
CityLoadModel? model;
|
||||
ArgsLoadInitModel? args;
|
||||
if(inputUser.text.isNotEmpty && inputPassword.text.isNotEmpty && inputUser.text.length>3 && inputPassword.text.length>3){
|
||||
if(selectUnit!=null){
|
||||
setState(() {
|
||||
error = '';
|
||||
loading = true;
|
||||
});
|
||||
await DbSqlite().saveCityInit(widget.args).then((value)async{
|
||||
|
||||
});
|
||||
if(model!=null){
|
||||
args = ArgsLoadInitModel(
|
||||
mode: mode,
|
||||
model:model!,
|
||||
user: inputUser.text,
|
||||
password: inputPassword.text,
|
||||
urlAPI: urlAPI
|
||||
);
|
||||
}
|
||||
if(args!=null){
|
||||
await ApiData().apiConect(args!).then((response) async {
|
||||
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
|
||||
setState(() {
|
||||
error = 'Usuário bloqueado/senha incorreta';
|
||||
});
|
||||
}else if(response['status']==0) {
|
||||
setState(() {
|
||||
error = 'Usuário não encontrado';
|
||||
});
|
||||
}else if(response['status']==1) {
|
||||
setState((){
|
||||
error = '';
|
||||
});
|
||||
//verificar se a criptografia identificou se a senha está correta
|
||||
if(EncryptPassword().encrypt(inputPassword.text,response['userPass']) == response['userPass']){
|
||||
// print(EncryptPassword().encrypt(inputPassword.text,response['userPass']));
|
||||
setState(() {
|
||||
loading = false;
|
||||
});
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Selecione sua cidade';
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Usuário/senha inválido(s)';
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
mode = widget.args.mode;
|
||||
inputUser.text = widget.args.user;
|
||||
inputPassword.text = widget.args.password;
|
||||
});
|
||||
getUnit();
|
||||
}
|
||||
|
||||
getUnit()async{
|
||||
Database db = await DbSqlite().intialDB();
|
||||
var query = "SELECT * FROM UNIDADES";
|
||||
List list = await db.rawQuery(query);
|
||||
// print("SELECT * FROM UNIDADES");
|
||||
// print(await db.rawQuery("SELECT * FROM UNIDADES"));
|
||||
for(int i=0; list.length > i;i++){
|
||||
listUnit.add(list[i]['NOME_UNIDADE']);
|
||||
searchUnitCodList.add(list[i]['ID_UNIDADE']);
|
||||
}
|
||||
print('searchListUnit');
|
||||
print(searchUnitCodList);
|
||||
setState(() {});
|
||||
}
|
||||
|
||||
getTeam()async{
|
||||
for(int i=0; listUnit.length > i;i++){
|
||||
if(listUnit[i] == selectUnit){
|
||||
idUnidade = searchUnitCodList[i].toString();
|
||||
print(searchUnitCodList[i]);
|
||||
}
|
||||
}
|
||||
if(idUnidade!=''){
|
||||
Database db = await DbSqlite().intialDB();
|
||||
var query = "SELECT * FROM EQUIPES WHERE ID_UNIDADE = $idUnidade";
|
||||
List list = await db!.rawQuery(query);
|
||||
print('getEquipes');
|
||||
print(list);
|
||||
setState(() {});
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
double width = MediaQuery.of(context).size.width;
|
||||
double height = MediaQuery.of(context).size.height;
|
||||
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
title: TextDefault(text: 'RKM AB - Sincronização de Unidade',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white),
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Container(
|
||||
padding: EdgeInsets.only(top: height*0.2),
|
||||
width: width,
|
||||
height: height,
|
||||
decoration: ConstVariable().backgroundGradient,
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: loading?null:()=>setState((){
|
||||
contLogo++;
|
||||
if(contLogo>=5 && contLogo<=10){
|
||||
mode = UrlApiConst.ModeHomologacao;
|
||||
urlAPI = UrlApiConst.ApiUrlHomologacao;
|
||||
}
|
||||
if(contLogo>10){
|
||||
mode = UrlApiConst.ModeDesenvolvimento;
|
||||
urlAPI = UrlApiConst.ApiUrlDesenvolvimento;
|
||||
if(contLogo==15){
|
||||
contLogo=0;
|
||||
mode = UrlApiConst.ModeOnline;
|
||||
urlAPI = UrlApiConst.ApiUrlOnline;
|
||||
}
|
||||
}
|
||||
}),
|
||||
child: Image.asset('assets/images/logo.PNG',width: width*0.4)
|
||||
),
|
||||
mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(),
|
||||
mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(),
|
||||
SizedBox(height: 10),
|
||||
loading?Center(
|
||||
child: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
Image.asset('assets/images/loading.gif'),
|
||||
SizedBox(height: 10),
|
||||
TextDefault(text: 'Carregando dados...',color: ColorPalette.black54,fontSize: 20,fontWeigth: FontWeight.bold,)
|
||||
],
|
||||
),
|
||||
):Form(
|
||||
autovalidateMode: AutovalidateMode.onUserInteraction,
|
||||
child: Container(
|
||||
width: width*0.6,
|
||||
height: height*0.3,
|
||||
child: ListView(
|
||||
children: [
|
||||
InputText(
|
||||
hint: 'Usuário',
|
||||
label: inputUser.text.isNotEmpty?'':'Usuário',
|
||||
error: 'Campo obrigatório',
|
||||
controller: inputUser,
|
||||
width: width*0.6,
|
||||
colorBorder: Colors.white,
|
||||
onChanged: (v)=>setState((){}),
|
||||
),
|
||||
InputText(
|
||||
hint: 'Senha',
|
||||
label: inputPassword.text.isNotEmpty?'':'Senha',
|
||||
error: 'Campo obrigatório',
|
||||
obscure: true,
|
||||
controller: inputPassword,
|
||||
width: width*0.6,
|
||||
colorBorder: Colors.white,
|
||||
onChanged: (v)=>setState((){}),
|
||||
),
|
||||
DropDownButtonDefault(
|
||||
width: width*0.6,
|
||||
title: 'Unidade',
|
||||
list: listUnit,
|
||||
select: selectUnit,
|
||||
onChanged: (value){
|
||||
// for(int i=0;listUnit.length > i;i++){
|
||||
// if(listUnit[i] == selectUnit){
|
||||
//
|
||||
// }
|
||||
// }
|
||||
setState(() {
|
||||
selectUnit = value!;
|
||||
validatorDropDown = true;
|
||||
});
|
||||
getTeam();
|
||||
},
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
loading?Container():ButtonDefault(
|
||||
onPressed: ()=>checkLogin(),
|
||||
title: 'Sincronizar',
|
||||
width: width*0.6,
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
TextDefault(text: error,color: ColorPalette.red),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -1,20 +1,18 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
import '../../models/args_load_init_model.dart';
|
||||
|
||||
class ApiData{
|
||||
Future apiConect(ArgsLoadInitModel args)async{
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/pass/${args.user}';
|
||||
//http://192.168.0.42:8010/api/atb/desenvolvimento/cabreuva/load/pass/admin
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/pass/${args.user}';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
return map;
|
||||
}
|
||||
Future loadPerm(ArgsLoadInitModel args)async{
|
||||
//http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/load/perm/${args.user}';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/load/perm/${args.user}';
|
||||
// final url = 'http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/load/perm/admin';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
@@ -22,9 +20,9 @@ class ApiData{
|
||||
return map;
|
||||
}
|
||||
Future loadUnidades(ArgsLoadInitModel args)async{
|
||||
print('entrou aqui ${args.model.nameCityApi}');
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/unidades
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/unidades';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/unidades';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -32,8 +30,7 @@ class ApiData{
|
||||
}
|
||||
Future loadProcedimentos(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentos
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentos';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentos';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -41,8 +38,7 @@ class ApiData{
|
||||
}
|
||||
Future loadProcedimentosRegistros(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosRegistros
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosRegistros';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosRegistros';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -50,8 +46,7 @@ class ApiData{
|
||||
}
|
||||
Future loadCID(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cid
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cid';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cid';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -59,8 +54,7 @@ class ApiData{
|
||||
}
|
||||
Future loadProcedimentosCID(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCID
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCID';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCID';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -68,8 +62,7 @@ class ApiData{
|
||||
}
|
||||
Future loadCBO(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/cbo
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/cbo';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/cbo';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -77,8 +70,7 @@ class ApiData{
|
||||
}
|
||||
Future loadProcedimentosCBO(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/procedimentosCBO
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/procedimentosCBO';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/procedimentosCBO';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -86,8 +78,7 @@ class ApiData{
|
||||
}
|
||||
Future loadCIAP(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/ciap
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/ciap';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/ciap';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -95,8 +86,7 @@ class ApiData{
|
||||
}
|
||||
Future loadMunicipios(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/municipios
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/municipios';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/municipios';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -104,8 +94,8 @@ class ApiData{
|
||||
}
|
||||
Future loadEquipes(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipes
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/equipes';
|
||||
// https://app0.rkmsistemas.com.br/api/atb/homologacao/cabreuva/admin/load/equipes
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/equipes';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
// print(map);
|
||||
@@ -113,8 +103,7 @@ class ApiData{
|
||||
}
|
||||
Future loadEquipeComponentes(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/equipeComponentes
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/equipeComponentes';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/equipeComponentes';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
print(map);
|
||||
@@ -122,47 +111,12 @@ class ApiData{
|
||||
}
|
||||
Future loadCompetencia(ArgsLoadInitModel args)async{
|
||||
// http://192.168.0.42:8010/api/atb/desenvolvimento/corumbatai/admin/load/competencia
|
||||
|
||||
'criar uma lista dentro do DB não usar essa api para competencia';
|
||||
'competencia sera dinamica com 4 meses para tras exemplo 042023/032023/022023/01/2023';
|
||||
|
||||
// <!-- value = [MUNICIPIO.CD_MUNICIPIO]|[nomemunicipio]|[MUNICIPIO.CD_ESTADO][MUNICIPIO.CD_IBGE] -->
|
||||
// <option value="3311|anhembi|SP|350230">Anhembi</option>
|
||||
// <option value="3313|aparecida|SP|350250">Aparecida</option>
|
||||
// <option value="3352|batatais|SP|350590">Batatais</option>
|
||||
// <option value="3360|biritiba|SP|350660">Biritiba Mirim</option>
|
||||
// <option value="3381|cabreuva|SP|350840">Cabreúva</option>
|
||||
// <option value="1903|cachoeira|BA|290490">Cachoeira Paulista</option>
|
||||
// <option value="3384|caconde|SP|350870">Caconde</option>
|
||||
// <option value="3409|casabranca|SP|351080">Casa Branca</option>
|
||||
// <option value="3427|corumbatai|SP|351270">Corumbataí</option>
|
||||
// <option value="3437|descalvado|SP|351370">Descalvado</option>
|
||||
// <option value="2539|extrema|MG|312510">Extrema</option>
|
||||
// <option value="3473|francodarocha|SP|351640">Franco da Rocha</option>
|
||||
// <option value="3514|igaracudotiete|SP|352000">Igaraçu do Tietê</option>
|
||||
// <option value="3531|iracemapolis|SP|352140">Iracemápolis</option>
|
||||
// <option value="3546|itapolis|SP|352270">Itápolis</option>
|
||||
// <option value="3555|itirapina|SP|352360">Itirapina</option>
|
||||
// <option value="3560|ituverava|SP|352410">Ituverava</option>
|
||||
// <option value="3570|jardinopolis|SP|352510">Jardinópolis</option>
|
||||
// <option value="3584|laranjal|SP|352640">Laranjal Paulista</option>
|
||||
// <option value="3601|macatuba|SP|352800">Macatuba</option>
|
||||
// <option value="3606|mairipora|SP|352850">Mairiporã</option>
|
||||
// <option value="3628|mococa|SP|353050">Mococa</option>
|
||||
// <option value="3642|morroagudo|SP|353190">Morro Agudo</option>
|
||||
// <option value="3691|pardinho|SP|353610">Pardinho</option>
|
||||
// <option value="3699|pederneiras|SP|353670">Pederneiras</option>
|
||||
// <option value="3719|piracicaba|SP|353870">Piracicaba</option>
|
||||
// <option value="3740|portoferreira|SP|354070">Porto Ferreira</option>
|
||||
// <option value="3816|santarita|SP|354750">Santa Rita</option>
|
||||
// <option value="3821|stoantoniodaalegria|SP|354790">Santo Antônio da Alegria</option>
|
||||
// <option value="3853|ssgrama|SP|355080">São Sebastião da Grama</option>
|
||||
// <option value="3882|tapiratiba|SP|355360">Tapiratiba</option>
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
final url = '${args.urlAPI}${args.mode}/$cityReplace/${args.user}/load/competencia';
|
||||
final url = '${args.urlAPI}${args.mode}/${args.model.nameCityApi}/${args.user}/load/competencia';
|
||||
final response = await http.get(Uri.parse(url));
|
||||
final map = json.decode(response.body);
|
||||
print(map);
|
||||
// print(map);
|
||||
return map;
|
||||
}
|
||||
}
|
||||
@@ -2,8 +2,6 @@ import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:path/path.dart';
|
||||
|
||||
import '../../utils/const_variable.dart';
|
||||
|
||||
class DbSqlite{
|
||||
|
||||
Future intialDB()async{
|
||||
@@ -38,7 +36,7 @@ class DbSqlite{
|
||||
db.execute('CREATE TABLE IF NOT EXISTS CIDADAOS (ID_CIDADAO INTEGER PRIMARY KEY AUTOINCREMENT, CD_USUARIO_SUS TEXT, NOME_CIDADAO TEXT, NOME_SOCIAL TEXT, SEXO TEXT, DT_NASCIMENTO TEXT, ID_ESTADO_CIVIL INTEGER, NOME_CONJUGE TEXT, NACIONALIDADE INTEGER, ID_MUNICIPIO_NASC INTEGER, NO_MUNICIPIO_NASC TEXT, ESTADO_UF_NASC TEXT, ID_ETNIA INTEGER, ID_ESCOLARIDADE INTEGER, ID_DEFICIENCIA INTEGER, NOME_MAE TEXT, DESCONHECE_MAE INTEGER, NOME_PAI TEXT, DESCONHECE_PAI INTEGER, ID_UNIDADE INTEGER, NUM_PRONTUARIO TEXT, NUM_PRONTUARIO_PROV TEXT, CLASSIFICACAO INTEGER, CLASSIFICACAO_SUB INTEGER, NUM_FAMILIA INTEGER, ID_PAIS_RESID INTEGER, ID_MUNICIPIO_RESID INTEGER, NO_MUNICIPIO_RESID TEXT, ESTADO_UF_RESID TEXT, CODIGO_IBGE_RESID INTEGER, NO_BAIRRO_LOGR TEXT, ID_LOGR_TIPO INTEGER, NOME_LOGR TEXT, CEP_LOGR INTEGER, NUMERO_LOGR INTEGER, LOTEAMENTO_LOGR INTEGER, COMPL_LOGR TEXT, PONTO_REFERENCIA TEXT, ZONA_LOGR INTEGER, DDD_TELEFONE INTEGER, NUM_TELEFONE INTEGER, DDD_CELULAR INTEGER, NUM_CELULAR INTEGER, DDD_RECADO INTEGER, NUM_RECADO INTEGER, EMAIL TEXT, OBSERVACOES TEXT, CPF INTEGER, CNS TEXT, TITULO_ELEITOR INTEGER, RG_NUMERO INTEGER, RG_COMPLEMENTO TEXT, RG_UF TEXT, RG_ORGAO TEXT, RG_DATA_EMISSAO TEXT, TIPO_CERTIDAO INTEGER, NUM_CERTIDAO TEXT, CARTORIO_CERTIDAO TEXT, LIVRO_CERTIDAO TEXT, FOLHA_CERTIDAO TEXT, TERMO_CERTIDAO TEXT, DT_EMISSAO_CERTIDAO TEXT, NUM_CTPS TEXT, NUM_SERIE_CTPS TEXT, ESTADO_UF_CTPS TEXT, NUM_PIS_PASEP TEXT, FL_RETIROU_CARTAO INTEGER, NUM_NIS TEXT, NUM_PROT_CROSS TEXT, RENDA_MENSAL REAL, PROFISSAO TEXT, DT_OBITO TEXT, DECLARACAO_OBITO TEXT, BLOQUEIO INTEGER, ORIGEM INTEGER, DT_HORA_CADASTRO TEXT, ID_USUARIO_CADASTRO INTEGER, ID_DOMICILIO INTEGER, ATENDIMENTOS INTEGER, SINCRONIZADO TEXT);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS CIDADAO_DOMICILIO (ID_DOMICILIO INTEGER PRIMARY KEY AUTOINCREMENT, TIPO_IMOVEL INTEGER, ID_AREA_DOMICILIO INTEGER, ID_MICROAREA_DOMICILIO INTEGER, FORA_AREA INTEGER, SITUACAO_MORADIA INTEGER, TIPO_LOCALIDADE INTEGER, TIPO_DOMICILIO INTEGER, NUM_MORADORES INTEGER, NUM_COMODOS INTEGER, SITUACAO_RURAL INTEGER, TIPO_ACESSO INTEGER, MAT_PREDOMINANTE INTEGER, DISPONIBILIDADE_ENERGIA INTEGER, TIPO_ABASTECIMENTO INTEGER, TRATAMENTO_AGUA INTEGER, DESTINO_LIXO INTEGER, ESCOAMENTO INTEGER, FL_ANIMAIS INTEGER, ANIMAIS_GATO INTEGER, ANIMAIS_CACHORRO INTEGER, ANIMAIS_PASSARO INTEGER, ANIMAIS_OUTROS INTEGER, QTDE_ANIMAIS INTEGER, CBO_RESP_CADASTRO TEXT, ID_RESP_CADASTRO INTEGER, CNES_RESP_CADASTRO TEXT, INE_RESP_CADASTRO TEXT, DT_CADASTRO TEXT, ID_EQUIPE INTEGER, ORIGEM TEXT, SINCRONIZADO TEXT, NOME_INSTITUICAO_PERMANENCIA TEXT, PROFISSIONAIS_VINCULADOS_INST INTEGER, RESPONSAVEL_TECNICO_INST TEXT, CNS_RESP_TECNICO_INST TEXT, CARGO_RESP_TECNICO_INST TEXT, TEL_RESP_TECNICO_INST TEXT);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS CIDS (CODIGO_CID TEXT, DESCRICAO_CID TEXT, RESTRICAO_SEXO INTEGER);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, ID_AREA INTEGER, AREA INTEGER, ID_MICROAREA INTEGER, MICROAREA INTEGER);');
|
||||
db.execute( 'CREATE TABLE IF NOT EXISTS CONTROLE_INTERNO (CARGA_INICIAL INTEGER, SYNC_UNIDADE INTEGER, CIDADE_LOAD TEXT, NOME_CIDADE TEXT, ID_MUNICIPIO INTEGER, UF_ESTADO TEXT, UNIDADE_SYNC TEXT, CODIGO_IBGE INTEGER, NOME_UNIDADE TEXT, AMBIENTE TEXT, ULTIMA_SINCRONIZACAO TEXT, COMPETENCIA TEXT, AREA INTEGER, MICROAREA INTEGER);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS DOMICILIOS_CIDADAOS (ID_DOMICILIO INTEGER, CD_USUARIO_SUS TEXT);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS EQUIPES (ID_EQUIPE INTEGER PRIMARY KEY AUTOINCREMENT, ID_UNIDADE INTEGER, INE TEXT, ID_ATB_AREA INTEGER, AREA INTEGER, ID_ATB_MICROAREA INTEGER, MICROAREA INTEGER);');
|
||||
db.execute('CREATE TABLE IF NOT EXISTS FICHAS_COMPLEMENTARES (ID_FICHA_COMPLEMENTAR INTEGER PRIMARY KEY AUTOINCREMENT, ID_CIDADAO INTEGER, CD_USUARIO_SUS TEXT, ID_PROFISSIONAL INTEGER, CBO_PROFISSIONAL TEXT, INE_PROFISSIONAL TEXT, CNES_UNIDADE TEXT, ID_UNIDADE INTEGER, ID_EQUIPE INTEGER, DATA_ATENDIMENTO TEXT, TURNO INTEGER, DATA_OLHINHO TEXT, RESULTADO_OLHINHO INTEGER, DATA_FUNDO_OLHO TEXT, RESULTADO_FUNDO_OLHO INTEGER, DATA_ORELHINHA TEXT, RESULTADO_ORELHINHA INTEGER, DATA_TRANSFONTANELA TEXT, RESULTADO_TRANSFONTANELA INTEGER, DATA_TOMOGRAFIA TEXT, RESULTADO_TOMOGRAFIA INTEGER, DATA_RESSONANCIA TEXT, RESULTADO_RESSONANCIA INTEGER, SINCRONIZADO TEXT);');
|
||||
@@ -69,46 +67,45 @@ class DbSqlite{
|
||||
return db;
|
||||
}
|
||||
Future deleteDB()async{
|
||||
//testar com ; no final
|
||||
var querys = [
|
||||
'UPDATE CONTROLE_INTERNO SET SYNC_UNIDADE = NULL, UNIDADE_SYNC = NULL, NOME_UNIDADE = NULL WHERE rowid = 1;',
|
||||
'DELETE FROM ATENDS_DOM_COMPL',
|
||||
'DELETE FROM ATENDS_DOM_PROC',
|
||||
'DELETE FROM ATENDS_DOM_SIGTAP',
|
||||
'DELETE FROM ATENDIMENTOS_DOMICILIARES',
|
||||
'DELETE FROM ATENDS_INDIV_PROC',
|
||||
'DELETE FROM ATENDS_INDIV_PROF',
|
||||
'DELETE FROM ATENDS_INDIVIDUAIS',
|
||||
'DELETE FROM BAIRROS',
|
||||
'DELETE FROM CADASTROS_INDIVIDUAIS',
|
||||
'DELETE FROM CBOS',
|
||||
'DELETE FROM CIAPS',
|
||||
'DELETE FROM CIDADAOS',
|
||||
'DELETE FROM CIDADAO_DOMICILIO',
|
||||
'DELETE FROM CIDS',
|
||||
'DELETE FROM CONTROLE_INTERNO',
|
||||
'DELETE FROM DOMICILIOS_CIDADAOS',
|
||||
'DELETE FROM EQUIPES',
|
||||
'DELETE FROM FICHAS_COMPLEMENTARES',
|
||||
'DELETE FROM LOGRADOUROS_ENDERECOS',
|
||||
'DELETE FROM LOGRADOUROS_LOTEAMENTOS',
|
||||
'DELETE FROM LOGRADOUROS_TIPOS',
|
||||
'DELETE FROM MUNICIPIOS',
|
||||
'DELETE FROM PROCEDIMENTOS_FICHAS',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV_FICHA',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV_SIGTAP',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_CBO',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_CID',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO',
|
||||
'DELETE FROM PROFISSIONAIS',
|
||||
'DELETE FROM PROFISSIONAIS_CBOS',
|
||||
'DELETE FROM PROFISSIONAIS_EQUIPE',
|
||||
'DELETE FROM UNIDADES',
|
||||
'DELETE FROM VISITAS_DOMICILIARES',
|
||||
'DELETE FROM VISITAS_DOMICILIARES_COMPL',
|
||||
'DELETE FROM VISITAS_DOMICILIARES_PROC',
|
||||
'DELETE FROM ATENDS_DOM_COMPL;',
|
||||
'DELETE FROM ATENDS_DOM_PROC;',
|
||||
'DELETE FROM ATENDS_DOM_SIGTAP;',
|
||||
'DELETE FROM ATENDIMENTOS_DOMICILIARES;',
|
||||
'DELETE FROM ATENDS_INDIV_PROC;',
|
||||
'DELETE FROM ATENDS_INDIV_PROF;',
|
||||
'DELETE FROM ATENDS_INDIVIDUAIS;',
|
||||
'DELETE FROM BAIRROS;',
|
||||
'DELETE FROM CADASTROS_INDIVIDUAIS;',
|
||||
'DELETE FROM CBOS;',
|
||||
'DELETE FROM CIAPS;',
|
||||
'DELETE FROM CIDADAOS;',
|
||||
'DELETE FROM CIDADAO_DOMICILIO;',
|
||||
'DELETE FROM CIDS;',
|
||||
'DELETE FROM CONTROLE_INTERNO;',
|
||||
'DELETE FROM DOMICILIOS_CIDADAOS;',
|
||||
'DELETE FROM EQUIPES;',
|
||||
'DELETE FROM FICHAS_COMPLEMENTARES;',
|
||||
'DELETE FROM LOGRADOUROS_ENDERECOS;',
|
||||
'DELETE FROM LOGRADOUROS_LOTEAMENTOS;',
|
||||
'DELETE FROM LOGRADOUROS_TIPOS;',
|
||||
'DELETE FROM MUNICIPIOS;',
|
||||
'DELETE FROM PROCEDIMENTOS_FICHAS;',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV;',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV_FICHA;',
|
||||
'DELETE FROM PROCEDIMENTOS_INDIV_SIGTAP;',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP;',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_CBO;',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_CID;',
|
||||
'DELETE FROM PROCEDIMENTOS_SIGTAP_REGISTRO;',
|
||||
'DELETE FROM PROFISSIONAIS;',
|
||||
'DELETE FROM PROFISSIONAIS_CBOS;',
|
||||
'DELETE FROM PROFISSIONAIS_EQUIPE;',
|
||||
'DELETE FROM UNIDADES;',
|
||||
'DELETE FROM VISITAS_DOMICILIARES;',
|
||||
'DELETE FROM VISITAS_DOMICILIARES_COMPL;',
|
||||
'DELETE FROM VISITAS_DOMICILIARES_PROC;',
|
||||
];
|
||||
Database db = await intialDB();
|
||||
for(int i=0;querys.length>i;i++){
|
||||
@@ -295,26 +292,24 @@ class DbSqlite{
|
||||
print(await db.query('PROFISSIONAIS_EQUIPE'));
|
||||
return db;
|
||||
}
|
||||
Future saveCompetence(var competence,ArgsLoadInitModel args)async{
|
||||
Future saveCityInit(ArgsLoadInitModel args)async{
|
||||
Database db = await intialDB();
|
||||
String cityReplace = ConstVariable().replaceText(args.city);
|
||||
print(competence);
|
||||
//refatorar cidade_load e nome_cidade
|
||||
'parameters = [{"carga_inicial": 1, "cidade_load": cidade, "nome_cidade": vm.nomeCidade[cidade], "cidade_id": cidadeID, "estado": estado, "ibge": ibge, "ambiente": ambiente, "competencia": competencia.replace(/\D/g, '')}]';
|
||||
"INSERT OR REPLACE INTO CONTROLE_INTERNO (rowid, CARGA_INICIAL, CIDADE_LOAD, NOME_CIDADE, ID_MUNICIPIO, UF_ESTADO, CODIGO_IBGE, AMBIENTE, COMPETENCIA) VALUES (1,?,?,?,?,?,?,?,?)";
|
||||
|
||||
Map<String, dynamic> row = {
|
||||
'CARGA_INICIAL' : 1,
|
||||
'CIDADE_LOAD' : cityReplace,
|
||||
'NOME_CIDADE' : args.city,
|
||||
'ID_MUNICIPIO' : '',
|
||||
'UF_ESTADO' : '',
|
||||
'CODIGO_IBGE' : '',
|
||||
'AMBIENTE' : args.mode,
|
||||
'COMPETENCIA' : competence,
|
||||
};
|
||||
int id = await db.insert('CONTROLE_INTERNO', row);
|
||||
print('id increment $id CONTROLE_INTERNO');
|
||||
Map<String, dynamic> row = {
|
||||
'CARGA_INICIAL' : 1,
|
||||
'CIDADE_LOAD' : args.model.nameCityApi,
|
||||
'NOME_CIDADE' : args.model.nameCityFront,
|
||||
'ID_MUNICIPIO' : args.model.codCity,
|
||||
'UF_ESTADO' : args.model.codState,
|
||||
'CODIGO_IBGE' : args.model.codCityIbge,
|
||||
'AMBIENTE' : args.mode,
|
||||
'ULTIMA_SINCRONIZACAO' : DateTime.now().toString(),
|
||||
'COMPETENCIA' : '${DateTime.now().year}${DateTime.now().month<10?'0':''}${DateTime.now().month-1}',
|
||||
};
|
||||
int id = await db.insert('CONTROLE_INTERNO', row);
|
||||
print(await db.query('CONTROLE_INTERNO'));
|
||||
return db;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rkm/models/city_load_model.dart';
|
||||
import 'color_palette.dart';
|
||||
|
||||
class ConstVariable{
|
||||
@@ -217,39 +218,38 @@ class ConstVariable{
|
||||
'225124 - Médico pediatra',
|
||||
'225125 - Médico clínico',
|
||||
];
|
||||
List<String> itensCity = [
|
||||
'Anhembi',
|
||||
'Aparecida',
|
||||
'Batatais',
|
||||
'Biritiba Mirim',
|
||||
'Cabreúva',
|
||||
'Cachoeira Paulista',
|
||||
'Caconde',
|
||||
'Casa Branca',
|
||||
'Corumbataí',
|
||||
'Descalvado',
|
||||
'Extrema',
|
||||
'Franco da Rocha',
|
||||
'Igaraçu do Tiete',
|
||||
'Iracemápolis',
|
||||
'Itapeva',
|
||||
'Itápolis',
|
||||
'Itirapina',
|
||||
'Ituverava',
|
||||
'Jardinópolis',
|
||||
'Laranjal Paulista',
|
||||
'Macatuba',
|
||||
'Mairiporã',
|
||||
'Mococa',
|
||||
'Morro Agudo',
|
||||
'Pardinho',
|
||||
'Pederneiras',
|
||||
'Piracicaba',
|
||||
'Porto Ferreira',
|
||||
'Santa Rita',
|
||||
'Santo Antônio da Alegria',
|
||||
'São Sabastião da Grama',
|
||||
'Tapiratiba'
|
||||
List<CityLoadModel> itensCity = [
|
||||
CityLoadModel(codCity: 3311, nameCityApi: 'anhembi', nameCityFront: 'Anhembi', codState: 'SP', codCityIbge: 350230),
|
||||
CityLoadModel(codCity: 3313, nameCityApi: 'aparecida', nameCityFront: 'Aparecida', codState: 'SP', codCityIbge: 350250),
|
||||
CityLoadModel(codCity: 3352, nameCityApi: 'batatais', nameCityFront: 'Batatais', codState: 'SP', codCityIbge: 350590),
|
||||
CityLoadModel(codCity: 3360, nameCityApi: 'biritiba', nameCityFront: 'Biritiba Mirim', codState: 'SP', codCityIbge: 350660),
|
||||
CityLoadModel(codCity: 3381, nameCityApi: 'cabreuva', nameCityFront: 'Cabreúva', codState: 'SP', codCityIbge: 350840),
|
||||
CityLoadModel(codCity: 1903, nameCityApi: 'cachoeira', nameCityFront: 'Cachoeira Paulista', codState: 'SP', codCityIbge: 290490),
|
||||
CityLoadModel(codCity: 3384, nameCityApi: 'caconde', nameCityFront: 'Caconde', codState: 'SP', codCityIbge: 350870),
|
||||
CityLoadModel(codCity: 3409, nameCityApi: 'casabranca', nameCityFront: 'Casa Branca', codState: 'SP', codCityIbge: 351080),
|
||||
CityLoadModel(codCity: 3427, nameCityApi: 'corumbatai', nameCityFront: 'Corumbataí', codState: 'SP', codCityIbge: 351270),
|
||||
CityLoadModel(codCity: 3437, nameCityApi: 'descalvado', nameCityFront: 'Descalvado', codState: 'SP', codCityIbge: 351370),
|
||||
CityLoadModel(codCity: 2539, nameCityApi: 'extrema', nameCityFront: 'Extrema', codState: 'MG', codCityIbge: 312510),
|
||||
CityLoadModel(codCity: 3473, nameCityApi: 'francodarocha', nameCityFront: 'Franco da Rocha', codState: 'SP', codCityIbge: 351640),
|
||||
CityLoadModel(codCity: 3514, nameCityApi: 'igaracudotiete', nameCityFront: 'Igaraçu do Tietê', codState: 'SP', codCityIbge: 352000),
|
||||
CityLoadModel(codCity: 3531, nameCityApi: 'iracemapolis', nameCityFront: 'Iracemápolis', codState: 'SP', codCityIbge: 352140),
|
||||
CityLoadModel(codCity: 3546, nameCityApi: 'itapolis', nameCityFront: 'Itápolis', codState: 'SP', codCityIbge: 352270),
|
||||
CityLoadModel(codCity: 3555, nameCityApi: 'itirapina', nameCityFront: 'Itirapina', codState: 'SP', codCityIbge: 352360),
|
||||
CityLoadModel(codCity: 3560, nameCityApi: 'ituverava', nameCityFront: 'Ituverava', codState: 'SP', codCityIbge: 352410),
|
||||
CityLoadModel(codCity: 3570, nameCityApi: 'jardinopolis', nameCityFront: 'Jardinópolis', codState: 'SP', codCityIbge: 352510),
|
||||
CityLoadModel(codCity: 3584, nameCityApi: 'laranjal', nameCityFront: 'Laranjal Paulista', codState: 'SP', codCityIbge: 352640),
|
||||
CityLoadModel(codCity: 3601, nameCityApi: 'macatuba', nameCityFront: 'Macatuba', codState: 'SP', codCityIbge: 352800),
|
||||
CityLoadModel(codCity: 3606, nameCityApi: 'mairipora', nameCityFront: 'Mairiporã', codState: 'SP', codCityIbge: 352850),
|
||||
CityLoadModel(codCity: 3628, nameCityApi: 'mococa', nameCityFront: 'Mococa', codState: 'SP', codCityIbge: 353050),
|
||||
CityLoadModel(codCity: 3642, nameCityApi: 'morroagudo', nameCityFront: 'Morro Agudo', codState: 'SP', codCityIbge: 353190),
|
||||
CityLoadModel(codCity: 3691, nameCityApi: 'pardinho', nameCityFront: 'Pardinho', codState: 'SP', codCityIbge: 353610),
|
||||
CityLoadModel(codCity: 3699, nameCityApi: 'pederneiras', nameCityFront: 'Pederneiras', codState: 'SP', codCityIbge: 353670),
|
||||
CityLoadModel(codCity: 3719, nameCityApi: 'piracicaba', nameCityFront: 'Piracicaba', codState: 'SP', codCityIbge: 353870),
|
||||
CityLoadModel(codCity: 3740, nameCityApi: 'portoferreira', nameCityFront: 'Porto Ferreira', codState: 'SP', codCityIbge: 354070),
|
||||
CityLoadModel(codCity: 3816, nameCityApi: 'santarita', nameCityFront: 'Santa Rita', codState: 'SP', codCityIbge: 354750),
|
||||
CityLoadModel(codCity: 3821, nameCityApi: 'stoantoniodaalegria',nameCityFront: 'Santo Antônio da Alegria', codState: 'SP', codCityIbge: 354790),
|
||||
CityLoadModel(codCity: 3853, nameCityApi: 'ssgrama', nameCityFront: 'São Sebastião da Grama', codState: 'SP', codCityIbge: 355080),
|
||||
CityLoadModel(codCity: 3882, nameCityApi: 'tapiratiba', nameCityFront: 'Tapiratiba', codState: 'SP', codCityIbge: 355360),
|
||||
];
|
||||
var backgroundGradient = BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
@@ -261,15 +261,4 @@ class ConstVariable{
|
||||
],
|
||||
)
|
||||
);
|
||||
|
||||
replaceText(String text){
|
||||
String replace= text.toLowerCase()
|
||||
.replaceAll('ú', 'u')
|
||||
.replaceAll('ç', 'c')
|
||||
.replaceAll('ó', 'o')
|
||||
.replaceAll('ô', 'o')
|
||||
.replaceAll('í', 'i')
|
||||
.replaceAll('ã','a');
|
||||
return replace;
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ import 'package:rkm/screens/about_screen.dart';
|
||||
import 'package:rkm/screens/attendance_list_screen.dart';
|
||||
import 'package:rkm/screens/home_screen.dart';
|
||||
import 'package:rkm/screens/load_init_screen.dart';
|
||||
import 'package:rkm/screens/login_screen.dart';
|
||||
import 'package:rkm/screens/login_load_screen.dart';
|
||||
import 'package:rkm/screens/select_service/eligibility_assessment_screen.dart';
|
||||
import 'package:rkm/screens/splash_screen.dart';
|
||||
import '../screens/clear_data_screen.dart';
|
||||
@@ -21,7 +21,7 @@ import '../screens/sinc_data_screen.dart';
|
||||
|
||||
var routes = {
|
||||
'/home': (context) => HomeScreen(),
|
||||
'/login': (context) => LoginScreen(),
|
||||
'/login_load': (context) => LoginLoadScreen(),
|
||||
'/register_citizen': (context) => RegisterCitizenScreen(),
|
||||
'/attendance_list': (context) => AttendanceListScreen(),
|
||||
'/about': (context) => AboutScreen(),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rkm/widgets/text_default.dart';
|
||||
|
||||
import '../models/city_load_model.dart';
|
||||
import '../utils/color_palette.dart';
|
||||
import '../utils/const_variable.dart';
|
||||
|
||||
@@ -36,13 +37,13 @@ class DropDownButtonCity extends StatelessWidget {
|
||||
color: ColorPalette.white
|
||||
),
|
||||
child: DropdownButtonHideUnderline(
|
||||
child: DropdownButton<String>(
|
||||
child: DropdownButton(
|
||||
hint: TextDefault(text: 'Cidade',fontSize: ConstVariable().fontSizeInput),
|
||||
value: select,
|
||||
items: ConstVariable().itensCity.map((value) => DropdownMenuItem(
|
||||
value: value,
|
||||
value: value.nameCityFront,
|
||||
child: TextDefault(
|
||||
text: value,
|
||||
text: value.nameCityFront,
|
||||
),
|
||||
)
|
||||
).toList(),
|
||||
|
||||
@@ -9,7 +9,7 @@ class DropDownButtonDefault extends StatelessWidget {
|
||||
String? select;
|
||||
String title;
|
||||
double fontSize;
|
||||
List<String> list;
|
||||
List list;
|
||||
double width;
|
||||
double widthContainer;
|
||||
|
||||
@@ -33,16 +33,23 @@ class DropDownButtonDefault extends StatelessWidget {
|
||||
margin: ConstVariable().marginHightInput,
|
||||
color: ColorPalette.white,
|
||||
child: DropdownButtonHideUnderline(
|
||||
child: DropdownButton<String>(
|
||||
hint: TextDefault(text: title,fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end),
|
||||
child: DropdownButton(
|
||||
hint: Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 8.0),
|
||||
child: TextDefault(text: title,fontSize: ConstVariable().fontSizeInput,textAlign: TextAlign.end),
|
||||
),
|
||||
value: select,
|
||||
items: list.map((value) => DropdownMenuItem(
|
||||
value: value,
|
||||
child: Container(
|
||||
width: widthContainer,
|
||||
child: TextDefault(
|
||||
text: value,
|
||||
fontSize: fontSize,
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 10.0),
|
||||
child: TextDefault(
|
||||
text: value,
|
||||
fontSize: fontSize,
|
||||
color: Colors.black,
|
||||
),
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user