import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../models/models.dart'; import '../../viewmodels/variable_view_model.dart'; import '../../themes/themes.dart'; import '../../widgets/widgets.dart'; class VariableForm extends StatefulWidget { final Variable variable; const VariableForm({Key? key, required this.variable}) : super(key: key); @override _VariableFormState createState() => _VariableFormState(); } class _VariableFormState extends State { final _nombre = TextEditingController(); final _clave = TextEditingController(); final _descripcion = TextEditingController(); bool _activo = true; @override void initState() { super.initState(); _nombre.text = widget.variable.nombre ?? ""; _clave.text = widget.variable.clave ?? ""; _descripcion.text = widget.variable.descripcion ?? ""; _activo = widget.variable.activo ?? true; } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( widget.variable.id == null ? 'Nueva Variable' : 'Editar Variable', style: TextStyle(color: AppTheme.secondary), ), iconTheme: IconThemeData(color: AppTheme.secondary), ), body: SingleChildScrollView( padding: EdgeInsets.all(8), child: Column( children: [ tarjeta( Padding( padding: const EdgeInsets.all(8), child: Column( children: [ AppTextField( maxLength: 100, etiqueta: 'Nombre', controller: _nombre, hintText: 'Nombre de la variable', ), AppTextField( maxLength: 100, etiqueta: 'Clave', controller: _clave, hintText: 'Clave de la variable', ), AppTextField( maxLength: 200, etiqueta: 'Descripción', controller: _descripcion, hintText: 'Descripción de la variable', ), SwitchListTile( activeColor: AppTheme.primary, title: const Text( "Activo", style: TextStyle( fontWeight: FontWeight.bold, fontSize: 18), ), value: _activo, onChanged: (bool value) { setState(() { _activo = value; }); }, ), ], ), ), ), SizedBox(height: 15), boton("Guardar", () async { Provider.of(context, listen: false) .setIsLoading(true); widget.variable.nombre = _nombre.text; widget.variable.clave = _clave.text; widget.variable.descripcion = _descripcion.text; widget.variable.activo = _activo; await Provider.of(context, listen: false) .updateVariable(widget.variable); Provider.of(context, listen: false) .setIsLoading(false); if (context.mounted) { Navigator.pop(context); } }) ], ), ), ); } @override void dispose() { _nombre.dispose(); _clave.dispose(); _descripcion.dispose(); super.dispose(); } }