123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- 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<SucursalesPage> {
- Sucursal? _selectedSucursal;
- @override
- void initState() {
- super.initState();
- Provider.of<SucursalViewModel>(context, listen: false)
- .fetchLocalSucursales()
- .then((_) {
- final sucursales =
- Provider.of<SucursalViewModel>(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<SucursalViewModel>(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: [
- AppDropdownModel<Sucursal>(
- etiqueta: 'Seleccione una sucursal',
- hint: 'Elija una sucursal',
- selectedValue: _selectedSucursal,
- onChanged: (Sucursal? newValue) {
- setState(() {
- _selectedSucursal = newValue;
- });
- },
- items: sucursales.map((Sucursal sucursal) {
- return DropdownMenuItem<Sucursal>(
- value: sucursal,
- child: Text(
- sucursal.nombre ?? '',
- style: TextStyle(color: Colors.black),
- ),
- );
- }).toList(),
- ),
- SizedBox(height: 20),
- 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<void> _guardarSucursalSeleccionada() async {
- if (_selectedSucursal != null) {
- // Guardar la sucursal seleccionada utilizando el ViewModel
- await Provider.of<SucursalViewModel>(context, listen: false)
- .setSelectedSucursal(_selectedSucursal!);
- setState(() {
- // Volver a establecer la sucursal seleccionada en el Dropdown
- _selectedSucursal = _selectedSucursal;
- });
- }
- }
- }
|