import 'package:flutter/material.dart';
import 'package:invent_app/model/general.dart';
import '../general/constantes.dart';
class Clase1Sc extends StatefulWidget {
int _uno_; // es hijo
int _uno_;
Clase1Sc({Key key, @required this._uno_, @required this._uno_}) : super(key: key);
@override
_clase2State createState() => _clase2();
}
///
class _clase2State extends State<Clase1> {
bool _enProceso = false;
algoCrl control = new AlgoCrl(); // el control
int _nuevo = 1;
bool _autoValidar = false;
final _formaKey = GlobalKey<FormState>();
/*
generados
bool _interno;
int _claTipoProveedor;
int _claEstado;
int _claBanco;
int _iva;
final TextEditingController _nomProveedorCtrl = new TextEditingController();
*/
@override
void initState() {
/*
generados
//inicia los bool de la forma
*/
_datosIniciales();
super.initState();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: barra(),
body: SafeArea(
child: Stack(
fit: StackFit.expand,
children: [
forma(context),
Visibility(visible: _enProceso, child: progreso(),),
],
)
),
);
}
///
Widget barra(){
String titulo = _nuevo == 1 ? general.n('Nueva que') : general.n('Modificar que');
return AppBar(
title: Text(titulo,
style: TextStyle(fontWeight: FontWeight.normal,
fontSize: 17.0)
),
brightness: Brightness.dark,
leading: IconButton(
icon: Icon(Icons.arrow_back, color: Colors.white),
onPressed: () => Navigator.of(context).pop(),
),
actions: <Widget>[
Visibility(
visible: general.hasCredencial('cual'),
child: TextButton(
style: TextButton.styleFrom(
primary: Colors.white,
backgroundColor: iaColor1,
onSurface: Colors.grey
),
onPressed: _validar,
child: Text(general.n('Guardar'),
style: TextStyle(
fontWeight: FontWeight.normal,
fontSize: 15.0,
fontStyle: FontStyle.italic)
),
),
),
],
);
}
///
Widget forma(context){
return Container(
color: Colors.white,
margin: EdgeInsets.all(8.0),
padding: EdgeInsets.all(8.0),
child: SingleChildScrollView(
child: Form(
key: _formaKey,
autovalidateMode: _autoValidadando(),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
/*
generados
txtNomProveedor(),
*/
],
)
)
)
);
}
///
AutovalidateMode _autoValidadando(){
if(_autoValidar){
return AutovalidateMode.always;
}
if(!_autoValidar){
return AutovalidateMode.disabled;
}
return AutovalidateMode.onUserInteraction;
}
///
Widget progreso() {
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(child: CircularProgressIndicator()),
],
);
}
/*
generados
WIDGETS
*/
///
_validar(){
if(_enProceso){
return;
}
FocusScope.of(context).unfocus();
if (_formaKey.currentState.validate()) {
_guardar();
}else{
setState(() { _autoValidar = true; });
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text(general.n('Datos no válidos'),),
backgroundColor: iaColor1,
)
);
}
}
///
_guardar() async{
setState(() { _enProceso = true; });
String url = general.servidor + '/modulo_app/sendUNO';
var parametros = {
'claInvent': general.claInvent,
'nuevo': _nuevo.toString(),
/*
generados
'claProveedor': widget.claProveedor.toString(),
'nomProveedor': _nomProveedorCtrl.text,
*/
};
Map<String, dynamic> datos = await API.post(url, parametros, debug: false);
// print(datos);
int idRespuesta = datos['idRespuesta'] + 0;
if( idRespuesta == 1 ) {
_tres_Model _dirActualizada = new _tres_Model(
/*generados
claProveedor: datos['data']['claProveedor'] ?? 0,
nomProveedor: datos['data']['nomProveedor'] ?? '',
*/
);
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(datos['aviso']),
backgroundColor: iaColor1,
)
);
Navigator.pop(context, _dirActualizada);
}else{
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(datos['aviso'],),
backgroundColor: iaColor1,
)
);
}
setState(() { _enProceso = false; });
}
///
_datosIniciales() async {
setState(() => _enProceso = true);
if(widget.claDireccion > 0) {
var datos = await control.getProveedor(widget.claProveedor);
_nuevo = datos['nuevo'];
/*
generados
_nomProveedorCtrl.text = datos['nomProveedor'] ?? '';
*/
}
setState(() => _enProceso = false);
}
} // fin clase