127 lines
3.4 KiB
Dart
127 lines
3.4 KiB
Dart
import 'package:cloud_firestore/cloud_firestore.dart';
|
|
import 'package:firebase_auth/firebase_auth.dart';
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:get/get.dart';
|
|
import 'package:prosappco/src/components/pop_appbar.dart';
|
|
import 'package:prosappco/src/presentation/screens/about.dart';
|
|
|
|
class ConfiguracionScreen extends StatefulWidget {
|
|
const ConfiguracionScreen({super.key});
|
|
|
|
@override
|
|
State<ConfiguracionScreen> createState() => _ConfiguracionScreenState();
|
|
}
|
|
|
|
class _ConfiguracionScreenState extends State<ConfiguracionScreen> {
|
|
late final FirebaseAuth _auth;
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
_auth = FirebaseAuth.instance;
|
|
}
|
|
|
|
Future<void> deleteAccount() async {
|
|
try {
|
|
final currentUser = _auth.currentUser;
|
|
|
|
if (currentUser != null) {
|
|
final uid = currentUser.uid;
|
|
|
|
await FirebaseFirestore.instance.collection('users').doc(uid).delete();
|
|
|
|
await currentUser.delete();
|
|
|
|
await _auth.signOut();
|
|
|
|
Get.snackbar(
|
|
'Cuenta Eliminada',
|
|
'Tu cuenta ha sido eliminada con éxito.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
}
|
|
} catch (e) {
|
|
Get.snackbar(
|
|
'Error al Eliminar Cuenta',
|
|
'Hubo un error al eliminar tu cuenta. Por favor, inténtalo de nuevo más tarde.',
|
|
snackPosition: SnackPosition.BOTTOM,
|
|
);
|
|
}
|
|
}
|
|
|
|
Future<void> _showDeleteAccountConfirmationDialog(
|
|
BuildContext context) async {
|
|
return showDialog(
|
|
context: context,
|
|
builder: (BuildContext context) {
|
|
return AlertDialog(
|
|
title: const Text('Eliminar Cuenta'),
|
|
content: const Text(
|
|
'¿Estás seguro de que deseas eliminar tu cuenta? Esta acción no se puede deshacer.'),
|
|
actions: [
|
|
TextButton(
|
|
onPressed: () {
|
|
Navigator.of(context).pop();
|
|
},
|
|
child: const Text('Cancelar'),
|
|
),
|
|
TextButton(
|
|
onPressed: () {
|
|
deleteAccount();
|
|
Navigator.of(context).pop();
|
|
},
|
|
child: const Text(
|
|
'Eliminar',
|
|
style:
|
|
TextStyle(color: Colors.red, fontWeight: FontWeight.w600),
|
|
),
|
|
),
|
|
],
|
|
);
|
|
},
|
|
);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Scaffold(
|
|
appBar: PopAppbar(
|
|
onPressed: () {
|
|
Navigator.pop(context);
|
|
},
|
|
label: 'Configuración'),
|
|
body: ListView(
|
|
children: [
|
|
ListTile(
|
|
onTap: () {
|
|
Navigator.push(
|
|
context,
|
|
CupertinoPageRoute(
|
|
builder: (BuildContext context) {
|
|
return const AboutScreen();
|
|
},
|
|
),
|
|
);
|
|
},
|
|
title: const Text('Acerca de la aplicación'),
|
|
trailing: const Icon(
|
|
Icons.keyboard_arrow_right,
|
|
color: Colors.black,
|
|
),
|
|
),
|
|
ListTile(
|
|
onTap: () {
|
|
_showDeleteAccountConfirmationDialog(context);
|
|
},
|
|
title: const Text(
|
|
'Eliminar cuenta',
|
|
style: TextStyle(color: Colors.red),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|