showConfirmWithOldPass static method
- BuildContext context,
- String key,
- String oldPass,
- UserClass currentUser,
Método para mostrar una alerta de confirmación con la contraseña antigua.
Este método muestra un AlertDialog
en el que el usuario debe ingresar
su contraseña actual para confirmar una acción (como cambiar
la contraseña).
Parámetros:
context
: El contexto de la aplicación donde se mostrará el diálogo.key
: Clave de localización para personalizar el mensaje del diálogo.oldPass
: Clave de localización para el campo de la contraseña actual.currentUser
: Objeto del usuario actual para validar la contraseña.
Devuelve true
si la contraseña ingresada es correcta, false
si el usuario cancela
la acción, y null
si ocurre un error.
Validaciones:
- Se valida que la contraseña ingresada cumpla con los requisitos y coincida con la actual.
- Si la validación es exitosa, se redirige a la pantalla principal.
Implementation
static Future<bool?> showConfirmWithOldPass(
BuildContext context, String key, String oldPass, UserClass currentUser) {
final oldPasswordController = TextEditingController();
final formKey = GlobalKey<FormState>();
return showDialog<bool>(
context: context,
builder: (context) {
return AlertDialog(
backgroundColor: AppColors.lightVioletColor,
title: Internationalization.internationalization
.createLocalizedSemantics(
context,
'${key}_label',
'${key}_hint',
'${key}_label',
const TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
),
content: Internationalization.internationalization
.createLocalizedSemantics(
context,
'${oldPass}_form_label',
'${oldPass}_form_hint',
'${oldPass}_form_hint',
const TextStyle(fontSize: 16),
),
actions: <Widget>[
// CAMPO PARA INTRODUCIR SU VIEJA CONTRASEÑA
Form(
key: formKey,
child: PasswordFieldForm(
icon: IconClass.iconMaker(context, Icons.lock, "password"),
labelText: Internationalization.internationalization
.getLocalizations(context, '${oldPass}_form_label'),
hintText: Internationalization.internationalization
.getLocalizations(context, '${oldPass}_form_label'),
controller: oldPasswordController,
validator: (value) => Validator.validatePassword(
value, true, false, currentUser, context),
labelSemantics: Internationalization.internationalization
.getLocalizations(context, '${oldPass}_form_label'),
hintSemantics: Internationalization.internationalization
.getLocalizations(context, '${oldPass}_form_label'),
borderSize: 15,
colorBox: AppColors.imagenBg,
passwordOnSaved: (String? value) {},
),
),
const SizedBox(
height: 10,
),
// BOTONES PARA CANCELAR O DARLE OK
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
TextButton(
onPressed: () {
// CIERRA LA ALERTA Y RETORNA FALSE
Navigator.pop(context, false);
},
child: Internationalization.internationalization
.createLocalizedSemantics(
context,
'cancel_label',
'cancel_hint',
'cancel_label',
const TextStyle(fontSize: 16, color: Colors.red),
),
),
TextButton(
onPressed: () {
if (formKey.currentState!.validate()) {
// CAMBIAR DE PESTAÑA
Navigator.pop(context, true);
ChangeScreen.changeScreen(
const BottomNavigation(), context);
} // VALIDAR SI LOS DATOS ESTAN CORRECTOS
},
child: Internationalization.internationalization
.createLocalizedSemantics(
context,
'accept_label',
'accept_hint',
'accept_label',
const TextStyle(fontSize: 16, color: Colors.blue),
),
),
],
)
],
);
});
}