custom_appbar.dart 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. import 'package:flutter/material.dart';
  2. import 'package:provider/provider.dart';
  3. import 'package:turquessa_mesas_hoster/core/models/sucursal_model.dart';
  4. import '../../mvvm/viewmodels/sucursal_view_model.dart';
  5. class CustomAppbar extends StatefulWidget {
  6. const CustomAppbar({super.key});
  7. @override
  8. State<CustomAppbar> createState() => _CustomAppbarState();
  9. }
  10. class _CustomAppbarState extends State<CustomAppbar> {
  11. @override
  12. void initState() {
  13. super.initState();
  14. final _sucursalViewModel =
  15. Provider.of<SucursalViewModel>(context, listen: false);
  16. _sucursalViewModel.fetchLocalSucursales();
  17. WidgetsBinding.instance.addPostFrameCallback((_) async {
  18. Provider.of<SucursalViewModel>(context, listen: false)
  19. .sincronizarSucursalesDesdeApi();
  20. await _sucursalViewModel.sincronizarSucursales();
  21. await _sucursalViewModel.fetchLocalSucursales();
  22. });
  23. }
  24. String? _selectedValue;
  25. @override
  26. Widget build(BuildContext context) {
  27. final sucursalViewModel = Provider.of<SucursalViewModel>(context);
  28. final sucursales = sucursalViewModel.sucursales;
  29. return Row(
  30. children: [
  31. Image.asset(
  32. 'assets/Turquessa.png',
  33. height: 100,
  34. ),
  35. const SizedBox(width: 10),
  36. SizedBox(
  37. width: 240,
  38. child: Expanded(
  39. child: DropdownButtonFormField<String>(
  40. value: _selectedValue,
  41. hint: Text(
  42. _selectedValue?.isEmpty ?? true
  43. ? 'Selecciona una sucursal'
  44. : '',
  45. style:
  46. TextStyle(color: Colors.black, fontWeight: FontWeight.bold),
  47. ),
  48. icon: const Icon(Icons.arrow_drop_down),
  49. decoration: InputDecoration(
  50. contentPadding:
  51. const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
  52. border: OutlineInputBorder(
  53. borderRadius: BorderRadius.circular(15),
  54. borderSide: BorderSide.none,
  55. ),
  56. filled: true,
  57. fillColor: Colors.white,
  58. ),
  59. items: sucursales
  60. .map((e) => DropdownMenuItem(
  61. value: e.nombre,
  62. child: Text(e.nombre ?? ""),
  63. ))
  64. .toList(),
  65. onChanged: (value) {
  66. setState(() {
  67. _selectedValue = value;
  68. // setSelectedSucursal(value as Sucursal);
  69. });
  70. },
  71. ),
  72. ),
  73. )
  74. ],
  75. );
  76. }
  77. }