I’m working on a Flutter app and I have implemented account deletion functionality. The issue I’m facing is that after the account is deleted successfully
{"success":1,"status":203,"message":"Your account has been deleted successfully."}
,
but the user remains logged in.
When I debugged the code I found that it is not entering in if
block. It comes here if (success) {..}
but doesn’t enter inside.
Here’s the relevant code snippet from my deleteUserAccount function:
Future<void> deleteUserAccount(BuildContext context, DeleteAccountProvider deleteAccountProvider, UserProvider userProvider) async {
final confirmed = await showDialog(
context: context,
builder: (context) {
return CupertinoAlertDialog(
title: Text(AppLocalizations.of(context)!.accountDeletion),
content: Text(AppLocalizations.of(context)!.sure),
actions: [
TextButton(
onPressed: () => Navigator.pop(context, false),
child: Text(AppLocalizations.of(context)!.cancel),
),
TextButton(
onPressed: () => Navigator.pop(context, true),
child: Text(AppLocalizations.of(context)!.delete),
),
],
);
});
if (confirmed != null && confirmed) {
SharedPreferences prefs = await SharedPreferences.getInstance();
String? userToken = prefs.getString('user_login_token');
final email = userProvider.user?.email;
final success = await deleteAccountProvider.deleteAccount(context, userToken ?? '', email ?? '');
if (success) {
await logout();
}
}
}
Future<void> logout() async {
final prefs = await SharedPreferences.getInstance();
if (kDebugMode) {
print('Language Code After Logout: ${prefs.getString('languageCode')}');
}
if (mounted) {
context.read<UserProvider>().clearUserData();
}
await prefs.remove("user_login_token");
if (mounted) {
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => const OnBoardingScreen(),
),
(route) => false);
}
}