perfil android update

This commit is contained in:
Felipe
2023-10-25 10:12:49 -05:00
parent 45b3e096f1
commit 360c33f636
+81 -5
View File
@@ -295,6 +295,86 @@ class _ProfileScreenState extends State<ProfileScreen> {
}
}
Future<void> _updateEmail(String newEmail) async {
final user = _auth.currentUser;
try {
await user!.updateEmail(newEmail);
await FirebaseFirestore.instance
.collection('users')
.doc(uid)
.update({'email': newEmail});
setState(() {
_email = newEmail;
});
Get.snackbar(
'Éxito',
'Correo electrónico actualizado correctamente.',
snackPosition: SnackPosition.BOTTOM,
);
} catch (e) {
Get.snackbar(
'No se pudo actualizar el correo',
'Primero vuelve a iniciar sesión para confirmar tu identidad y asegurarte de que el nuevo correo electrónico no se haya utilizado previamente.',
snackPosition: SnackPosition.BOTTOM,
);
print('Error al actualizar el correo electrónico: $e');
}
}
Future<void> _showEmailUpdateDialog(BuildContext context) async {
TextEditingController emailController = TextEditingController();
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: const Text('Actualizar Email'),
content: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextFormField(
controller: emailController,
decoration: const InputDecoration(
labelText: 'Nuevo Email',
),
),
const SizedBox(height: 16.0),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton(
onPressed: () {
Navigator.of(context).pop();
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey,
),
child: const Text('Cancelar'),
),
ElevatedButton(
onPressed: () {
// Llama a una función para actualizar el correo electrónico.
String newEmail = emailController.text.trim();
if (newEmail.isNotEmpty) {
_updateEmail(newEmail);
}
Navigator.of(context).pop();
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
),
child: const Text('Guardar'),
),
],
),
],
),
);
},
);
}
Future<void> updateEmailAndPassword(String email, String password) async {
final User? user = FirebaseAuth.instance.currentUser;
if (user != null) {
@@ -409,11 +489,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
_email != null
? TextFormField(
onTap: () {
Navigator.push(context, CupertinoPageRoute(
builder: (BuildContext context) {
return NewPasswordScreen();
},
));
_showEmailUpdateDialog(context);
},
readOnly: true,
controller: _emailController,