mesa_form.dart 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. import 'package:conalep_pos/models/mesa_model.dart';
  2. import 'package:conalep_pos/themes/themes.dart';
  3. import 'package:conalep_pos/viewmodels/mesa_view_model.dart';
  4. import 'package:conalep_pos/widgets/widgets.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:provider/provider.dart';
  7. class MesaForm extends StatefulWidget {
  8. final Mesa mesa;
  9. const MesaForm({Key? key, required this.mesa}) : super(key: key);
  10. @override
  11. _MesaFormState createState() => _MesaFormState();
  12. }
  13. class _MesaFormState extends State<MesaForm> {
  14. final _nombre = TextEditingController();
  15. final _clave = TextEditingController();
  16. bool _activa = true;
  17. @override
  18. void initState() {
  19. super.initState();
  20. _nombre.text = widget.mesa.nombre ?? "";
  21. _clave.text = widget.mesa.clave ?? "";
  22. _activa = widget.mesa.activa ?? true;
  23. }
  24. @override
  25. Widget build(BuildContext context) {
  26. return Scaffold(
  27. appBar: AppBar(
  28. title: Text(
  29. widget.mesa.id == null ? 'Nueva Mesa' : 'Editar Mesa',
  30. style: TextStyle(color: AppTheme.secondary),
  31. ),
  32. iconTheme: IconThemeData(color: AppTheme.secondary),
  33. ),
  34. body: SingleChildScrollView(
  35. padding: EdgeInsets.all(8),
  36. child: Column(
  37. children: [
  38. tarjeta(
  39. Padding(
  40. padding: const EdgeInsets.all(8),
  41. child: Column(
  42. children: [
  43. AppTextField(
  44. maxLength: 100,
  45. etiqueta: 'Nombre',
  46. controller: _nombre,
  47. hintText: 'Nombre de la variable',
  48. ),
  49. AppTextField(
  50. maxLength: 100,
  51. etiqueta: 'Clave',
  52. controller: _clave,
  53. hintText: 'Clave de la variable',
  54. ),
  55. SwitchListTile(
  56. activeColor: AppTheme.primary,
  57. title: const Text(
  58. "Activo",
  59. style: TextStyle(
  60. fontWeight: FontWeight.bold, fontSize: 18),
  61. ),
  62. value: _activa,
  63. onChanged: (bool value) {
  64. setState(() {
  65. _activa = value;
  66. });
  67. },
  68. ),
  69. ],
  70. ),
  71. ),
  72. ),
  73. SizedBox(height: 15),
  74. boton("Guardar", () async {
  75. Provider.of<MesaViewModel>(context, listen: false)
  76. .setIsLoading(true);
  77. widget.mesa.nombre = _nombre.text;
  78. widget.mesa.clave = _clave.text;
  79. widget.mesa.activa = _activa;
  80. await Provider.of<MesaViewModel>(context, listen: false)
  81. .updateMesa(widget.mesa);
  82. Provider.of<MesaViewModel>(context, listen: false)
  83. .setIsLoading(false);
  84. if (context.mounted) {
  85. Navigator.pop(context);
  86. }
  87. })
  88. ],
  89. ),
  90. ),
  91. );
  92. }
  93. @override
  94. void dispose() {
  95. _nombre.dispose();
  96. _clave.dispose();
  97. super.dispose();
  98. }
  99. }