您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 
 
 

102 行
3.4 KiB

  1. import 'package:flutter/material.dart';
  2. import 'package:go_router/go_router.dart';
  3. import 'package:provider/provider.dart';
  4. import 'package:qadirneyriz/screens/home/state.dart';
  5. import 'package:qadirneyriz/setting/setting.dart';
  6. import 'package:qadirneyriz/utils/enums/status.dart';
  7. import 'package:qadirneyriz/utils/tools/tools.dart';
  8. import 'package:qadirneyriz/widgets/custom_appbar.dart';
  9. import 'package:flutter_gen/gen_l10n/app_localizations.dart';
  10. import 'package:qadirneyriz/widgets/custom_button.dart';
  11. class DeleteAccountScreen extends StatefulWidget {
  12. const DeleteAccountScreen({super.key});
  13. @override
  14. State<DeleteAccountScreen> createState() => _DeleteAccountScreenState();
  15. }
  16. class _DeleteAccountScreenState extends State<DeleteAccountScreen> {
  17. @override
  18. Widget build(BuildContext context) {
  19. return Consumer<HomeState>(
  20. builder: (context, value, child) {
  21. return CustomScrollView(
  22. slivers: [
  23. CustomAppbar(),
  24. SliverFillRemaining(
  25. hasScrollBody: false,
  26. child: Padding(
  27. padding: const EdgeInsets.all(16.0),
  28. child: Column(
  29. children: [
  30. const Icon(
  31. Icons.warning_amber_rounded,
  32. size: 100,
  33. color: Colors.red,
  34. ),
  35. const SizedBox(height: 20),
  36. Text(
  37. AppLocalizations.of(context)!.suretodelelteaccount,
  38. textAlign: TextAlign.center,
  39. style:
  40. TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
  41. ),
  42. const SizedBox(height: 20),
  43. Text(
  44. AppLocalizations.of(context)!.actioncantundo,
  45. textAlign: TextAlign.center,
  46. style: TextStyle(fontSize: 16, color: Colors.grey[600]),
  47. ),
  48. const SizedBox(height: 40),
  49. deleteButton(value),
  50. ],
  51. ),
  52. ),
  53. ),
  54. ],
  55. );
  56. },
  57. );
  58. }
  59. CustomButton deleteButton(HomeState state) {
  60. switch (state.statusDeleteAccount) {
  61. case Status.loading:
  62. return CustomButton(
  63. onPressed: null,
  64. text: AppLocalizations.of(context)!.loading,
  65. hieght: 50,
  66. );
  67. default:
  68. return CustomButton(
  69. onPressed: () async {
  70. final status = await state.deleteAccount();
  71. if (status == Status.ready) {
  72. final logOut = await setting.userLocalDb.logOut();
  73. if (logOut) {
  74. context.goNamed('route');
  75. Tools.showCustomSnackBar(context,
  76. text: state.messageDeleteAccount ?? 'Done successfully',
  77. isError: false);
  78. } else {
  79. Tools.showCustomSnackBar(context,
  80. text: state.messageDeleteAccount ??
  81. AppLocalizations.of(context)!.error,
  82. isError: true);
  83. }
  84. } else {
  85. Tools.showCustomSnackBar(context,
  86. text: state.messageDeleteAccount ??
  87. AppLocalizations.of(context)!.error,
  88. isError: true);
  89. }
  90. },
  91. text: AppLocalizations.of(context)!.deleteaccount,
  92. hieght: 50,
  93. );
  94. }
  95. }
  96. }