feat: creacion de interfaz xon simulacion de rutas
This commit is contained in:
@@ -63,13 +63,12 @@ class _LoginScreenState extends State<LoginScreen>
|
||||
);
|
||||
|
||||
// 1. Obtener la conexión por el cable USB Mapped
|
||||
// 1. Obtener la conexión
|
||||
final conn = await MySqlService().getConnection();
|
||||
|
||||
// 2. Ejecutar la búsqueda con los nombres exactos de tus columnas
|
||||
|
||||
// 2. Modificamos el SELECT para buscar SOLO por email
|
||||
// 2. Modificamos el SELECT para traer también la columna 'colonia'
|
||||
final result = await conn.execute(
|
||||
"SELECT email, contrasena_hash, rol FROM usuarios WHERE email = :email",
|
||||
"SELECT email, contrasena_hash, rol, colonia FROM usuarios WHERE email = :email",
|
||||
{
|
||||
"email": _identifierController.text.trim(),
|
||||
},
|
||||
@@ -82,20 +81,18 @@ class _LoginScreenState extends State<LoginScreen>
|
||||
final contrasenaEnBd = usuarioEncontrado['contrasena_hash'];
|
||||
final email = usuarioEncontrado['email'];
|
||||
final rol = usuarioEncontrado['rol'];
|
||||
final colonia = usuarioEncontrado[
|
||||
'colonia']; // 📍 Extraemos la colonia real de la BD
|
||||
|
||||
// 3. Validamos la contraseña directamente en Flutter comparando textos limpios
|
||||
if (contrasenaEnBd?.trim() == _passwordController.text.trim()) {
|
||||
|
||||
if (!mounted) return;
|
||||
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text("¡Bienvenido de nuevo, $email ($rol)!")),
|
||||
);
|
||||
|
||||
// 📍 CORRECCIÓN DEFINITIVA: Usamos GoRouter nativo en lugar de Navigator
|
||||
// Esto elimina por completo el conflicto de aserción en el árbol de widgets
|
||||
context.go('/home?colonia=Centro');
|
||||
|
||||
// 📍 Enviamos la colonia real extraída de MySQL directamente a la URL del Home
|
||||
context.go('/home?colonia=$colonia');
|
||||
} else {
|
||||
// Contraseña mal mapeada en la BD
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
|
||||
Reference in New Issue
Block a user