import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import '../../viewmodels/viewmodels.dart'; import '../../models/models.dart'; import '../../widgets/widgets.dart'; class SucursalesPage extends StatefulWidget { @override _SucursalesPageState createState() => _SucursalesPageState(); } class _SucursalesPageState extends State { Sucursal? _selectedSucursal; @override void initState() { super.initState(); // Cargar las sucursales desde la base de datos local cuando se inicializa la pantalla Provider.of(context, listen: false) .fetchLocalSucursales() .then((_) { // Buscar la sucursal seleccionada automáticamente al cargar la pantalla final sucursales = Provider.of(context, listen: false).sucursales; setState(() { _selectedSucursal = sucursales.firstWhere( (sucursal) => sucursal.seleccionado == 1, orElse: () => null as Sucursal, ); }); }); } @override Widget build(BuildContext context) { final sucursalViewModel = Provider.of(context); final sucursales = sucursalViewModel.sucursales; return Scaffold( appBar: AppBar( title: Text('Sucursales'), ), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ // Dropdown para seleccionar una sucursal utilizando AppDropdownModel AppDropdownModel( etiqueta: 'Seleccione una sucursal', hint: 'Elija una sucursal', selectedValue: _selectedSucursal, onChanged: (Sucursal? newValue) { setState(() { _selectedSucursal = newValue; }); }, items: sucursales.map((Sucursal sucursal) { return DropdownMenuItem( value: sucursal, child: Text( sucursal.nombre ?? '', style: TextStyle(color: Colors.black), ), ); }).toList(), ), SizedBox(height: 20), // Tarjeta con la información de la sucursal seleccionada if (_selectedSucursal != null) tarjeta( Padding( padding: const EdgeInsets.all(8.0), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( 'Sucursal: ${_selectedSucursal!.nombre ?? ''}', style: TextStyle( fontSize: 16, fontWeight: FontWeight.bold), ), SizedBox(height: 5), Text('Dirección: ${_selectedSucursal!.direccion ?? ''}'), SizedBox(height: 5), Text('Ciudad: ${_selectedSucursal!.ciudad ?? ''}'), SizedBox(height: 5), Text('Clave: ${_selectedSucursal!.clave ?? ''}'), SizedBox(height: 5), ], ), ), ), SizedBox(height: 20), // Usar el widget de botón para guardar boton("Guardar", () async { await _guardarSucursalSeleccionada(); if (context.mounted) { Navigator.pop(context); } }), ], ), ), ); } Future _guardarSucursalSeleccionada() async { if (_selectedSucursal != null) { // Guardar la sucursal seleccionada utilizando el ViewModel await Provider.of(context, listen: false) .setSelectedSucursal(_selectedSucursal!); setState(() { // Volver a establecer la sucursal seleccionada en el Dropdown _selectedSucursal = _selectedSucursal; }); } } }