|
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
|
|
|
import 'package:provider/provider.dart';
|
|
|
import 'package:turquessa_mesas_hoster/core/models/mesa_model.dart';
|
|
|
import 'package:turquessa_mesas_hoster/utils/widgets/custom_appbar.dart';
|
|
|
+import 'package:turquessa_mesas_hoster/utils/widgets/navigation_rail.dart';
|
|
|
|
|
|
import '../../../utils/widgets/ordenes_card.dart';
|
|
|
import '../../viewmodels/viewmodels.dart';
|
|
@@ -40,36 +41,7 @@ class Formulario extends State<HomeScreen> {
|
|
|
),
|
|
|
body: Row(
|
|
|
children: [
|
|
|
- NavigationRail(
|
|
|
- backgroundColor: Color.fromARGB(255, 25, 30, 41),
|
|
|
- selectedIndex: _selectedIndex,
|
|
|
- onDestinationSelected: (int index) {
|
|
|
- setState(() {
|
|
|
- _selectedIndex = index;
|
|
|
- });
|
|
|
- },
|
|
|
- labelType: NavigationRailLabelType.all,
|
|
|
- destinations: const [
|
|
|
- NavigationRailDestination(
|
|
|
- icon: Icon(Icons.home, color: Colors.white),
|
|
|
- selectedIcon: Icon(Icons.home_filled),
|
|
|
- label: Text('Inicio'),
|
|
|
- ),
|
|
|
- NavigationRailDestination(
|
|
|
- icon: Icon(Icons.search),
|
|
|
- selectedIcon: Icon(
|
|
|
- Icons.search_rounded,
|
|
|
- color: Colors.white,
|
|
|
- ),
|
|
|
- label: Text('Buscar'),
|
|
|
- ),
|
|
|
- NavigationRailDestination(
|
|
|
- icon: Icon(Icons.settings),
|
|
|
- selectedIcon: Icon(Icons.settings_rounded, color: Colors.white),
|
|
|
- label: Text('Ajustes'),
|
|
|
- ),
|
|
|
- ],
|
|
|
- ),
|
|
|
+ CustomNavigationRail(selectedIndex: _selectedIndex),
|
|
|
Expanded(
|
|
|
child: Center(
|
|
|
child: GridView.builder(
|
|
@@ -90,10 +62,7 @@ class Formulario extends State<HomeScreen> {
|
|
|
});
|
|
|
},
|
|
|
child: TableCard(
|
|
|
- icon: Icons.table_chart,
|
|
|
- //TODO: Agregar campo de estatus de la mesa para definir los colores
|
|
|
- color: (mesa.activa == true) ? Colors.blue : Colors.grey,
|
|
|
- title: mesa.nombre ?? 'Mesa sin nombre',
|
|
|
+ mesa: mesa,
|
|
|
),
|
|
|
);
|
|
|
},
|
|
@@ -130,38 +99,6 @@ class Formulario extends State<HomeScreen> {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-class TableCard extends StatelessWidget {
|
|
|
- final IconData icon;
|
|
|
- final Color color;
|
|
|
- final String title;
|
|
|
- const TableCard(
|
|
|
- {super.key,
|
|
|
- required this.icon,
|
|
|
- required this.color,
|
|
|
- required this.title});
|
|
|
-
|
|
|
- @override
|
|
|
- Widget build(BuildContext context) {
|
|
|
- return Card(
|
|
|
- color: color,
|
|
|
- child: Column(
|
|
|
- mainAxisAlignment: MainAxisAlignment.center,
|
|
|
- children: [
|
|
|
- Icon(
|
|
|
- icon,
|
|
|
- size: 50,
|
|
|
- color: Colors.white,
|
|
|
- ),
|
|
|
- Text(
|
|
|
- title,
|
|
|
- style: const TextStyle(color: Colors.white, fontSize: 20),
|
|
|
- )
|
|
|
- ],
|
|
|
- ),
|
|
|
- );
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
class TablaDetalles extends StatelessWidget {
|
|
|
final Mesa table;
|
|
|
final EstadoPedido status;
|
|
@@ -259,9 +196,9 @@ class TablaDetalles extends StatelessWidget {
|
|
|
],
|
|
|
),
|
|
|
const SizedBox(height: 16),
|
|
|
- IconDataByStatus(status: status),
|
|
|
+ // IconDataByStatus(status: status),
|
|
|
const SizedBox(height: 16),
|
|
|
- const OrdenesScreen(),
|
|
|
+ OrdenesScreen(),
|
|
|
],
|
|
|
),
|
|
|
),
|
|
@@ -273,49 +210,87 @@ class TablaDetalles extends StatelessWidget {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-class IconDataByStatus extends StatelessWidget {
|
|
|
- final EstadoPedido status;
|
|
|
- const IconDataByStatus({Key? key, required this.status});
|
|
|
+class TableCard extends StatelessWidget {
|
|
|
+ final Mesa mesa;
|
|
|
+ const TableCard({
|
|
|
+ super.key,
|
|
|
+ required this.mesa,
|
|
|
+ });
|
|
|
|
|
|
@override
|
|
|
Widget build(BuildContext context) {
|
|
|
+ final status = mesa.estado ?? EstadoPedido.disponible;
|
|
|
+
|
|
|
+ Color backgroundColor;
|
|
|
+ Color iconColor;
|
|
|
+ IconData icon;
|
|
|
+ Color cardColor;
|
|
|
+
|
|
|
switch (status) {
|
|
|
case EstadoPedido.disponible:
|
|
|
- return IconButton(
|
|
|
- onPressed: () {
|
|
|
- final mesaViewModel =
|
|
|
- Provider.of<MesaViewModel>(context, listen: false);
|
|
|
- mesaViewModel.CambiarEstadoPedidoMesa(EstadoPedido.preparacion);
|
|
|
- },
|
|
|
- style: ButtonStyle(
|
|
|
- backgroundColor: MaterialStateProperty.all(
|
|
|
- const Color.fromARGB(255, 220, 252, 232)),
|
|
|
- ),
|
|
|
- icon: const Icon(Icons.table_restaurant_rounded, color: Colors.green),
|
|
|
- );
|
|
|
+ backgroundColor = const Color.fromARGB(255, 220, 252, 232);
|
|
|
+ iconColor = Colors.green;
|
|
|
+ icon = Icons.table_restaurant_rounded;
|
|
|
+ cardColor = const Color.fromARGB(255, 220, 252, 232);
|
|
|
+ break;
|
|
|
case EstadoPedido.surtida:
|
|
|
- return IconButton(
|
|
|
- onPressed: () {},
|
|
|
- icon: const Icon(Icons.coffee_rounded,
|
|
|
- color: Color.fromARGB(255, 220, 234, 254)),
|
|
|
- );
|
|
|
+ backgroundColor = const Color.fromARGB(255, 220, 234, 254);
|
|
|
+ iconColor = Colors.blue;
|
|
|
+ icon = Icons.coffee_rounded;
|
|
|
+ cardColor = const Color.fromARGB(255, 220, 234, 254);
|
|
|
+ break;
|
|
|
case EstadoPedido.preparacion:
|
|
|
- return IconButton(
|
|
|
- onPressed: () {},
|
|
|
- icon: const Icon(Icons.kitchen_rounded,
|
|
|
- color: Color.fromARGB(255, 243, 232, 255)),
|
|
|
- );
|
|
|
+ backgroundColor = const Color.fromARGB(255, 243, 232, 255);
|
|
|
+ iconColor = Colors.deepPurple;
|
|
|
+ icon = Icons.kitchen_rounded;
|
|
|
+ cardColor = const Color.fromARGB(255, 243, 232, 255);
|
|
|
+ break;
|
|
|
case EstadoPedido.cobrado:
|
|
|
- return IconButton(
|
|
|
- onPressed: () {},
|
|
|
- icon: const Icon(Icons.money_rounded,
|
|
|
- color: Color.fromARGB(255, 255, 238, 213)),
|
|
|
- );
|
|
|
+ backgroundColor = const Color.fromARGB(255, 255, 238, 213);
|
|
|
+ iconColor = Colors.amber;
|
|
|
+ icon = Icons.attach_money_rounded;
|
|
|
+ cardColor = const Color.fromARGB(255, 255, 238, 213);
|
|
|
+ break;
|
|
|
default:
|
|
|
- return IconButton(
|
|
|
- onPressed: () {},
|
|
|
- icon: const Icon(Icons.check_circle, color: Colors.grey),
|
|
|
- );
|
|
|
+ backgroundColor = Colors.grey.shade200;
|
|
|
+ iconColor = Colors.grey;
|
|
|
+ icon = Icons.settings;
|
|
|
+ cardColor = Colors.white;
|
|
|
+ break;
|
|
|
}
|
|
|
+
|
|
|
+ return Card(
|
|
|
+ color: cardColor,
|
|
|
+ child: Column(
|
|
|
+ mainAxisAlignment: MainAxisAlignment.center,
|
|
|
+ children: [
|
|
|
+ IconButton(
|
|
|
+ onPressed: () {
|
|
|
+ if (status == EstadoPedido.disponible) {
|
|
|
+ final mesaViewModel =
|
|
|
+ Provider.of<MesaViewModel>(context, listen: false);
|
|
|
+ mesaViewModel.CambiarEstadoPedidoMesa(EstadoPedido.preparacion);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ iconSize: 48,
|
|
|
+ style: ButtonStyle(
|
|
|
+ backgroundColor: MaterialStateProperty.all(backgroundColor),
|
|
|
+ ),
|
|
|
+ icon: Icon(icon, color: iconColor),
|
|
|
+ ),
|
|
|
+ const SizedBox(height: 8),
|
|
|
+ Text(
|
|
|
+ mesa.nombre ?? 'Mesa sin nombre',
|
|
|
+ style: TextStyle(
|
|
|
+ color: status == EstadoPedido.disponible
|
|
|
+ ? Colors.black
|
|
|
+ : Colors.black87,
|
|
|
+ fontSize: 20,
|
|
|
+ fontWeight: FontWeight.w500,
|
|
|
+ ),
|
|
|
+ )
|
|
|
+ ],
|
|
|
+ ),
|
|
|
+ );
|
|
|
}
|
|
|
}
|