feita a exibição dos dados dos cidadãos e a pesquisa
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:line_icons/line_icons.dart';
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
import 'package:rkm/widgets/icon_button_default.dart';
|
||||
import 'package:rkm/widgets/input_search_text.dart';
|
||||
import '../service/db/db_sqlite_load.dart';
|
||||
import '../widgets/appbar_default.dart';
|
||||
import '../widgets/item_citizen.dart';
|
||||
import 'registers_citizen/main_register_citizen_screen.dart';
|
||||
@@ -16,6 +18,56 @@ class HomeScreen extends StatefulWidget {
|
||||
class _HomeScreenState extends State<HomeScreen> {
|
||||
|
||||
var inputSearch = TextEditingController();
|
||||
List dataCitizen = [];
|
||||
List showResults = [];
|
||||
|
||||
loadCitizen()async{
|
||||
await DbSqliteLoad().intialDB().then((db)async {
|
||||
dataCitizen = await db.query('CIDADAOS ORDER BY NOME_CIDADAO');
|
||||
});
|
||||
searchCitizen();
|
||||
return 'complete';
|
||||
}
|
||||
|
||||
searchCitizen()async{
|
||||
if(inputSearch.text.isNotEmpty){
|
||||
showResults =[];
|
||||
for (int i =0;dataCitizen.length>i;i++) {
|
||||
String NOME_CIDADAO = dataCitizen[i]['NOME_CIDADAO'];
|
||||
if(NOME_CIDADAO.startsWith(inputSearch.text.toUpperCase())){
|
||||
print('ok $i');
|
||||
if(showResults.length<10){
|
||||
showResults.add(dataCitizen[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
setState(() {
|
||||
print(showResults);
|
||||
});
|
||||
}else{
|
||||
setState(() {
|
||||
for(int i = 0;i<10;i++){
|
||||
showResults.add(dataCitizen[i]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
_searchInit(){
|
||||
searchCitizen();
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
loadCitizen();
|
||||
inputSearch.addListener(_searchInit);
|
||||
}
|
||||
@override
|
||||
void dispose() {
|
||||
super.dispose();
|
||||
inputSearch.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -28,7 +80,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
width: width,
|
||||
height: height,
|
||||
decoration: ConstVariable().backgroundGradient,
|
||||
child: Column(
|
||||
child: ListView(
|
||||
children: [
|
||||
Row(
|
||||
children: [
|
||||
@@ -36,7 +88,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
hint: 'Busca cidadão (Por NOME ou CNS ou PRONTUÁRIO ou DATA NASCIMENTO)',
|
||||
fontSize: 10,
|
||||
controller: inputSearch,
|
||||
width: width*0.72
|
||||
width: width*0.72,
|
||||
),
|
||||
IconButtonDefault(
|
||||
icon: Icons.person_add,
|
||||
@@ -50,7 +102,7 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
onPressed: ()=>Navigator.pushNamed(context, '/attendance_list')
|
||||
),
|
||||
IconButtonDefault(
|
||||
icon: Icons.edit_note,
|
||||
icon: LineIcons.edit,
|
||||
onPressed: ()=>Navigator.pushNamed(context, '/edit_procedure')
|
||||
),
|
||||
],
|
||||
@@ -58,15 +110,15 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
Container(
|
||||
width: width,
|
||||
height: height*0.8,
|
||||
child: ListView.builder(
|
||||
itemCount: 10,
|
||||
child: showResults.length == 0?Container():ListView.builder(
|
||||
itemCount: showResults.length,
|
||||
itemBuilder: (context,index){
|
||||
return ItemCitizen(
|
||||
date: '00/00/0000',
|
||||
name: 'JOÃO DA SILVA',
|
||||
mother: 'MARIA DA SILVA',
|
||||
numberCNS: '123456789',
|
||||
numberMedicalRecord: '012345',
|
||||
date: '${showResults[index]['DT_NASCIMENTO']}',
|
||||
name: '${showResults[index]['NOME_CIDADAO']}',
|
||||
mother:'${showResults[index]['NOME_MAE']}',
|
||||
numberCNS: '${showResults[index]['CNS']}'=='null'?'999999999999999':'${showResults[index]['CNS']}',
|
||||
numberMedicalRecord: '${showResults[index]['NUM_PRONTUARIO']}',
|
||||
onTap: ()=> Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => MainRegisterCitizenScreen(screens: 3,)),
|
||||
|
||||
@@ -107,7 +107,6 @@ class _LoadInitScreenState extends State<LoadInitScreen> {
|
||||
setState(() {
|
||||
finish = true;
|
||||
});
|
||||
// Navigator.pushReplacementNamed(context, '/home');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,6 +2,8 @@ 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/screens/home_screen.dart';
|
||||
import 'package:rkm/screens/login/sync_login_screen.dart';
|
||||
import 'package:rkm/service/api/url_api_const.dart';
|
||||
import 'package:rkm/service/db/db_sqlite_load.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
@@ -17,9 +19,11 @@ import '../../service/api/encrypt_password.dart';
|
||||
import '../load_init_screen.dart';
|
||||
class LoginSavedScreen extends StatefulWidget {
|
||||
List listControl;
|
||||
ArgsLoadInitModel args;
|
||||
|
||||
LoginSavedScreen({
|
||||
required this.listControl
|
||||
required this.listControl,
|
||||
required this.args
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -32,36 +36,24 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
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!,
|
||||
mode: widget.args.mode,
|
||||
model:widget.args.model,
|
||||
user: inputUser.text,
|
||||
password: inputPassword.text,
|
||||
urlAPI: urlAPI
|
||||
urlAPI: widget.args.urlAPI
|
||||
);
|
||||
}
|
||||
if(args!=null){
|
||||
await ApiDataLoad().apiConect(args!).then((response) async {
|
||||
if(inputUser.text == inputPassword.text || response['bloqueio']==1){
|
||||
@@ -84,17 +76,12 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
});
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoadInitScreen(args: args!)),
|
||||
MaterialPageRoute(builder: (context) => HomeScreen()),
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Selecione sua cidade';
|
||||
});
|
||||
}
|
||||
}else{
|
||||
setState(() {
|
||||
error = 'Usuário/senha inválido(s)';
|
||||
@@ -102,16 +89,6 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
setState(() {
|
||||
if(widget.listControl.length!=0){
|
||||
mode = widget.listControl[0]['AMBIENTE'];
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
@@ -121,7 +98,21 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
centerTitle: true,
|
||||
title: TextDefault(text: 'RKM AB - Carga Inicial',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white),
|
||||
title: TextDefault(text: 'RKM AB - Login',fontSize: ConstVariable().fontSizeTitleAppBar,color: ColorPalette.white),
|
||||
actions: [
|
||||
ButtonDefault(
|
||||
width: width*0.35,
|
||||
borderColor: ColorPalette.appBar,
|
||||
textColor: ColorPalette.white,
|
||||
title: 'Sincronizar outra unidade',
|
||||
onPressed: (){
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: widget.args)),
|
||||
);
|
||||
}
|
||||
)
|
||||
],
|
||||
),
|
||||
body: SingleChildScrollView(
|
||||
child: Container(
|
||||
@@ -134,8 +125,8 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
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(),
|
||||
widget.args.mode == 'homologacao'?Image.asset('assets/images/homologacao.png',width: width*0.4):Container(),
|
||||
widget.args.mode == 'desenvolvimento'?Image.asset('assets/images/desenvolvimento.png',width: width*0.4):Container(),
|
||||
SizedBox(height: 10),
|
||||
loading?Center(
|
||||
child: Column(
|
||||
@@ -197,7 +188,7 @@ class _LoginSavedScreenState extends State<LoginSavedScreen> {
|
||||
padding: EdgeInsets.symmetric(vertical: 5),
|
||||
width: width*0.6,
|
||||
child: TextDefault(
|
||||
text: 'Unidade: '+widget.listControl[0]['UNIDADE'].toString(),
|
||||
text: 'Unidade: '+widget.listControl[0]['NOME_UNIDADE'].toString(),
|
||||
fontWeigth: FontWeight.bold,
|
||||
color: Colors.black,
|
||||
textAlign: TextAlign.center,
|
||||
|
||||
@@ -18,37 +18,48 @@ class SplashScreen extends StatefulWidget {
|
||||
|
||||
class _SplashScreenState extends State<SplashScreen> {
|
||||
|
||||
CityLoadModel? model;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
DbSqliteLoad().intialDB();
|
||||
timer();
|
||||
final PrefService _prefService = PrefService();
|
||||
_prefService.readCacheModel('user', 'password', 'city', 'mode').then((list){
|
||||
for(int i=0;ConstVariable().itensCity.length > i;i++){
|
||||
if(ConstVariable().itensCity[i].nameCityFront == list[2]!){
|
||||
model = ConstVariable().itensCity[i];
|
||||
}
|
||||
}
|
||||
timer(list);
|
||||
});
|
||||
}
|
||||
|
||||
timer()async{
|
||||
timer(List list)async{
|
||||
await DbSqliteLoad().intialDB().then((db)async{
|
||||
List dataControl = await db.query('MUNICIPIOS');
|
||||
List dataCitizen = await db.query('CIDADAOS');
|
||||
if(dataControl.length != 0){
|
||||
var query = "SELECT * FROM CONTROLE_INTERNO";
|
||||
dataControl = await db.rawQuery(query);
|
||||
print(dataCitizen);
|
||||
// print(dataCitizen);
|
||||
if(dataCitizen.length != 0){
|
||||
String? url;
|
||||
if(list[3]=='desenvolvimento'){
|
||||
url = UrlApiConst.ApiUrlDesenvolvimento;
|
||||
}else if(list[3]=='online'){
|
||||
url = UrlApiConst.ApiUrlOnline;
|
||||
}else if(list[3]=='homologacao'){
|
||||
url = UrlApiConst.ApiUrlHomologacao;
|
||||
}
|
||||
ArgsLoadInitModel args = ArgsLoadInitModel(mode: list[3], model: model!, user: list[0], password: list[1], urlAPI: url!);
|
||||
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: dataControl)),
|
||||
MaterialPageRoute(builder: (context) => LoginSavedScreen(listControl: dataControl,args: args,)),
|
||||
);
|
||||
}else{
|
||||
CityLoadModel? model;
|
||||
String? url;
|
||||
final PrefService _prefService = PrefService();
|
||||
_prefService.readCacheModel('user', 'password', 'city', 'mode').then((list){
|
||||
print('list $list');
|
||||
for(int i=0;ConstVariable().itensCity.length > i;i++){
|
||||
if(ConstVariable().itensCity[i].nameCityFront == list[2]!){
|
||||
model = ConstVariable().itensCity[i];
|
||||
}
|
||||
}
|
||||
if(list[3]=='desenvolvimento'){
|
||||
url = UrlApiConst.ApiUrlDesenvolvimento;
|
||||
}else if(list[3]=='online'){
|
||||
@@ -63,7 +74,6 @@ class _SplashScreenState extends State<SplashScreen> {
|
||||
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: args)),
|
||||
);
|
||||
}
|
||||
});
|
||||
}
|
||||
}else{
|
||||
Navigator.pushReplacementNamed(context, '/login_load');
|
||||
|
||||
@@ -122,7 +122,9 @@ class _SyncInitScreenState extends State<SyncInitScreen> {
|
||||
setState(()=> messageSteps = "Etapa 10 de 10 - Gravando os Cadastros Individuais no Aplicativo");
|
||||
}
|
||||
await DbSqliteSync().insertCadastrosIndividuais(value).then((value)async{
|
||||
//agora salvar controle interno
|
||||
await DbSqliteSync().saveSync(widget.args,idUnidade,area,microarea).then((value)async{
|
||||
Navigator.pushNamed(context, '/home');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -235,7 +235,7 @@ class DbSqliteLoad{
|
||||
int id = await db.insert('CIAPS', row);
|
||||
// print('id increment $id CIAPS');
|
||||
}
|
||||
print(await db.query('CIAPS'));
|
||||
// print(await db.query('CIAPS'));
|
||||
return db;
|
||||
}
|
||||
Future saveCity(var value)async{
|
||||
@@ -253,7 +253,7 @@ class DbSqliteLoad{
|
||||
int id = await db.insert('MUNICIPIOS', row);
|
||||
// print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO');
|
||||
}
|
||||
print(await db.query('MUNICIPIOS'));
|
||||
// print(await db.query('MUNICIPIOS'));
|
||||
return db;
|
||||
}
|
||||
Future saveTeam(var value)async{
|
||||
@@ -273,7 +273,7 @@ class DbSqliteLoad{
|
||||
int id = await db.insert('EQUIPES', row);
|
||||
// print('id increment $id EQUIPES');
|
||||
}
|
||||
print(await db.query('EQUIPES'));
|
||||
// print(await db.query('EQUIPES'));
|
||||
return db;
|
||||
}
|
||||
Future saveTeamComponents(var value)async{
|
||||
@@ -292,25 +292,4 @@ class DbSqliteLoad{
|
||||
print(await db.query('PROFISSIONAIS_EQUIPE'));
|
||||
return db;
|
||||
}
|
||||
Future saveCityInit(ArgsLoadInitModel args)async{
|
||||
Database db = await intialDB();
|
||||
//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' : 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,6 +1,8 @@
|
||||
import 'package:rkm/service/db/db_sqlite_load.dart';
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
|
||||
import '../../models/args_load_init_model.dart';
|
||||
|
||||
class DbSqliteSync{
|
||||
|
||||
Future deleteSync()async{
|
||||
@@ -408,8 +410,33 @@ class DbSqliteSync{
|
||||
};
|
||||
int id = await db.insert('CADASTROS_INDIVIDUAIS', row);
|
||||
// print('id increment $id PROCEDIMENTOS_SIGTAP_REGISTRO');
|
||||
print(await db.query('CADASTROS_INDIVIDUAIS'));
|
||||
// print(await db.query('CADASTROS_INDIVIDUAIS'));
|
||||
}
|
||||
return db;
|
||||
}
|
||||
Future saveSync(ArgsLoadInitModel args,idUnidade,area,microarea)async{
|
||||
Database db = await DbSqliteLoad().intialDB();
|
||||
//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' : 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,
|
||||
'SYNC_UNIDADE' : idUnidade,
|
||||
'NOME_UNIDADE' : args.model.nameCityFront,
|
||||
'AREA' : area,
|
||||
'MICROAREA' : microarea,
|
||||
'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,12 +1,14 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:rkm/models/args_load_init_model.dart';
|
||||
import 'package:rkm/widgets/alert_dialog_settings.dart';
|
||||
import '../screens/login/sync_login_screen.dart';
|
||||
import '../utils/color_palette.dart';
|
||||
import 'icon_button_default.dart';
|
||||
|
||||
class AppBarDefault{
|
||||
|
||||
@override
|
||||
PreferredSize appbar(BuildContext context,String title) {
|
||||
PreferredSize appbar(BuildContext context,String title,{ArgsLoadInitModel? args}) {
|
||||
return PreferredSize(
|
||||
preferredSize: Size.fromHeight(50),
|
||||
child: AppBar(
|
||||
@@ -21,7 +23,12 @@ class AppBarDefault{
|
||||
IconButtonDefault(
|
||||
icon: Icons.logout,
|
||||
color: ColorPalette.white,
|
||||
onPressed: ()=>Navigator.pushNamedAndRemoveUntil(context, '/login',(Route<dynamic> route) => false)),
|
||||
onPressed: (){
|
||||
Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) => SyncLoginScreen(args: args!)),
|
||||
);
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
@@ -16,7 +16,7 @@ class InputSearchText extends StatelessWidget {
|
||||
this.fontSize = 15.0,
|
||||
this.hint = '',
|
||||
this.color = ColorPalette.white,
|
||||
this.border = true
|
||||
this.border = true,
|
||||
});
|
||||
|
||||
@override
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:line_icons/line_icons.dart';
|
||||
import 'package:rkm/utils/color_palette.dart';
|
||||
import 'package:rkm/utils/const_variable.dart';
|
||||
import 'package:rkm/widgets/alert_dialog_default.dart';
|
||||
@@ -30,10 +31,10 @@ class ItemCitizen extends StatelessWidget {
|
||||
margin: ConstVariable().marginHightInput,
|
||||
color: ColorPalette.white,
|
||||
child: ListTile(
|
||||
title: TextDefault(text: name,fontWeigth: FontWeight.bold),
|
||||
subtitle: TextDefault(text: '$numberCNS - $numberMedicalRecord - $date - $mother',fontSize: 16),
|
||||
title: TextDefault(text: name,fontWeigth: FontWeight.bold,color: Colors.black54,fontSize: 18,),
|
||||
subtitle: TextDefault(text: '$numberCNS - $numberMedicalRecord - $date - $mother',fontSize: 13,color: Colors.black54),
|
||||
trailing: IconButton(
|
||||
icon: Icon(Icons.assignment_rounded,size: 35,),
|
||||
icon: Icon(LineIcons.clipboard,size: 35,),
|
||||
onPressed: ()=>AlertDialogDefault().alertSelect(context),
|
||||
),
|
||||
onTap: onTap,
|
||||
|
||||
Reference in New Issue
Block a user