sucursal_screen.dart 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import '../../viewmodels/viewmodels.dart';
  4. import '../../models/models.dart';
  5. import '../../widgets/widgets.dart';
  6. class SucursalesPage extends StatefulWidget {
  7. @override
  8. _SucursalesPageState createState() => _SucursalesPageState();
  9. }
  10. class _SucursalesPageState extends State<SucursalesPage> {
  11. Sucursal? _selectedSucursal;
  12. @override
  13. void initState() {
  14. super.initState();
  15. Provider.of<SucursalViewModel>(context, listen: false)
  16. .fetchLocalSucursales()
  17. .then((_) {
  18. final sucursales =
  19. Provider.of<SucursalViewModel>(context, listen: false).sucursales;
  20. setState(() {
  21. _selectedSucursal = sucursales.firstWhere(
  22. (sucursal) => sucursal.seleccionado == 1,
  23. orElse: () => null as Sucursal,
  24. );
  25. });
  26. });
  27. }
  28. @override
  29. Widget build(BuildContext context) {
  30. final sucursalViewModel = Provider.of<SucursalViewModel>(context);
  31. final sucursales = sucursalViewModel.sucursales;
  32. return Scaffold(
  33. appBar: AppBar(
  34. title: Text('Sucursales'),
  35. ),
  36. body: Padding(
  37. padding: const EdgeInsets.all(16.0),
  38. child: Column(
  39. crossAxisAlignment: CrossAxisAlignment.stretch,
  40. children: [
  41. AppDropdownModel<Sucursal>(
  42. etiqueta: 'Seleccione una sucursal',
  43. hint: 'Elija una sucursal',
  44. selectedValue: _selectedSucursal,
  45. onChanged: (Sucursal? newValue) {
  46. setState(() {
  47. _selectedSucursal = newValue;
  48. });
  49. },
  50. items: sucursales.map((Sucursal sucursal) {
  51. return DropdownMenuItem<Sucursal>(
  52. value: sucursal,
  53. child: Text(
  54. sucursal.nombre ?? '',
  55. style: TextStyle(color: Colors.black),
  56. ),
  57. );
  58. }).toList(),
  59. ),
  60. SizedBox(height: 20),
  61. if (_selectedSucursal != null)
  62. tarjeta(
  63. Padding(
  64. padding: const EdgeInsets.all(8.0),
  65. child: Column(
  66. crossAxisAlignment: CrossAxisAlignment.start,
  67. children: [
  68. Text(
  69. 'Sucursal: ${_selectedSucursal!.nombre ?? ''}',
  70. style: TextStyle(
  71. fontSize: 16, fontWeight: FontWeight.bold),
  72. ),
  73. SizedBox(height: 5),
  74. Text('Dirección: ${_selectedSucursal!.direccion ?? ''}'),
  75. SizedBox(height: 5),
  76. Text('Ciudad: ${_selectedSucursal!.ciudad ?? ''}'),
  77. SizedBox(height: 5),
  78. Text('Clave: ${_selectedSucursal!.clave ?? ''}'),
  79. SizedBox(height: 5),
  80. ],
  81. ),
  82. ),
  83. ),
  84. SizedBox(height: 20),
  85. // Usar el widget de botón para guardar
  86. boton("Guardar", () async {
  87. await _guardarSucursalSeleccionada();
  88. if (context.mounted) {
  89. Navigator.pop(context);
  90. }
  91. }),
  92. ],
  93. ),
  94. ),
  95. );
  96. }
  97. Future<void> _guardarSucursalSeleccionada() async {
  98. if (_selectedSucursal != null) {
  99. // Guardar la sucursal seleccionada utilizando el ViewModel
  100. await Provider.of<SucursalViewModel>(context, listen: false)
  101. .setSelectedSucursal(_selectedSucursal!);
  102. setState(() {
  103. // Volver a establecer la sucursal seleccionada en el Dropdown
  104. _selectedSucursal = _selectedSucursal;
  105. });
  106. }
  107. }
  108. }