esms_project/lib/screens/alterClient.dart

216 lines
6.0 KiB
Dart
Raw Normal View History

2021-09-02 08:35:25 -03:00
import 'dart:async';
import 'package:esms_project/client.dart';
import 'package:esms_project/screens/listClients.dart';
import 'package:esms_project/widgets/widget_button.dart';
import 'package:esms_project/widgets/widget_input.dart';
import 'package:flutter/material.dart';
import 'clientDetail.dart';
class alterClient extends StatefulWidget {
Client c;
alterClient(this.c);
@override
_alterClientState createState() => _alterClientState();
}
class _alterClientState extends State<alterClient> {
Timer d;
final values = new List<TextEditingController>.generate(
4, (_) => TextEditingController());
final _formCli = GlobalKey<FormState>();
@override
void initState() {
values[0].text = widget.c.name;
values[1].text = widget.c.telephone;
values[2].text = widget.c.cellular;
values[3].text = widget.c.observations;
super.initState();
}
@override
void setState(fn) {
if (mounted) {
super.setState(fn);
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Alterar Cliente"),
),
body: _layout());
}
_layout() {
return Container(
padding: EdgeInsets.all(20),
height: double.infinity,
child: SingleChildScrollView(
child: Column(
children: [
Form(
key: _formCli,
child: Column(
children: [
InputValidado(
"Digite o nome do Cliente",
"Ex. João da Silva",
controller: values[0],
),
InputTextosPhone(
"Digite um telefone",
"Ex. (15) 1234-5678",
controller: values[1],
),
InputTextosPhone(
"Digite um celular",
"Ex. (15) 991234-5678",
controller: values[2],
),
InputTextos(
"Observações:",
"Ex. Tem (15) 99123-4567 como outro número celular",
controller: values[3],
),
],
)),
Divider(
color: Colors.transparent,
),
Botoes(
"Atualizar cliente",
onPressed: _updateClient,
),
Botoes(
"Remover cliente",
onPressed: () {
_removeClient();
},
)
]
)
));
}
_updateClient() {
setState(() {
if (_formCli.currentState.validate()) {
int temp = widget.c.id;
widget.c = new Client(
values[0].text,
values[1].text,
values[2].text,
values[3].text,
);
widget.c.UpdateDB(temp);
int StuckCount = 0;
d = Timer(Duration(milliseconds: 300), () {
if (widget.c.status == 1) {
_showcontent(temp);
StuckCount = 0;
d.cancel();
}
else
StuckCount++;
});
if (StuckCount >= 2)
_displaySnackbar("Verifique os valores");
}
});
}
_displaySnackbar(String text) {
setState(() {
final snackBar =
SnackBar(content: Text(text, style: TextStyle(fontSize: 16)));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
});
}
void _showcontent(temp) {
setState(() {
showDialog(
context: context, barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return new AlertDialog(
title: new Text('Aviso'),
content: new SingleChildScrollView(
child: new ListBody(
children: [
new Text('Cliente atualizado.'),
],
),
),
actions: [
new TextButton(
child: new Text('OK'),
onPressed: () {
Navigator.of(context).popUntil((route) => route.isFirst);
if(values[0].text == "CLIENTE_REMOVIDO")
Navigator.of(context).push(new MaterialPageRoute(
builder: (context) => ListClients()));
else {
Navigator.of(context).push(new MaterialPageRoute(
builder: (context) => ListClients()));
Navigator.of(context).push(new MaterialPageRoute(
builder: (context) => ClientDetail(temp)));
}
},
),
],
);
},
);
});
}
_removeClient() {
setState(() {
showDialog(
context: context, barrierDismissible: false, // user must tap button!
builder: (BuildContext context) {
return new AlertDialog(
title: new Text('Confirmação'),
content: new SingleChildScrollView(
child: new ListBody(
children: [
new Text('Tem certeza que quer remover o cliente ${widget.c
.name}?'),
],
),
),
actions: [
new TextButton(
child: new Text('Sim'),
onPressed: () {
values[0].text = "CLIENTE_REMOVIDO";
values[1].text = "";
values[2].text = "";
values[3].text = "";
_updateClient();
},
),
new TextButton(
child: new Text('Não'),
onPressed: () {
},
),
],
);
},
);
});
}
}