setting_controller.dart 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import 'package:get/get.dart';
  2. import 'package:package_info_plus/package_info_plus.dart';
  3. import '../../../../config/translations/strings_enum.dart';
  4. import '../../../../utils/awesome_notifications_helper.dart';
  5. import '../../../controllers/api_controller.dart';
  6. import '../../../data/sp/ix_sp.dart';
  7. import '../../../dialog/loading/loading_dialog.dart';
  8. class SettingController extends GetxController {
  9. final apiController = Get.find<ApiController>();
  10. // 自动重连开关
  11. final _autoReconnect = true.obs;
  12. bool get autoReconnect => _autoReconnect.value;
  13. set autoReconnect(bool value) => _autoReconnect.value = value;
  14. final _pushNotifications = false.obs;
  15. bool get pushNotifications => _pushNotifications.value;
  16. set pushNotifications(bool value) => _pushNotifications.value = value;
  17. final _version = ''.obs;
  18. String get version => _version.value;
  19. set version(String value) => _version.value = value;
  20. final _hasUpdate = false.obs;
  21. bool get hasUpdate => _hasUpdate.value;
  22. set hasUpdate(bool value) => _hasUpdate.value = value;
  23. @override
  24. void onInit() {
  25. super.onInit();
  26. _initPushNotifications();
  27. _getVersion();
  28. }
  29. /// 获取版本信息
  30. void _getVersion() async {
  31. final packageInfo = await PackageInfo.fromPlatform();
  32. version = packageInfo.version;
  33. final code = int.tryParse(packageInfo.buildNumber) ?? 0;
  34. final upgrade = IXSP.getUpgrade();
  35. if (upgrade?.versionCode == code) {
  36. hasUpdate = false;
  37. } else {
  38. hasUpdate = upgrade?.upgradeType == 1;
  39. }
  40. }
  41. Future<void> _initPushNotifications() async {
  42. pushNotifications =
  43. await AwesomeNotificationsHelper.checkNotificationPermission();
  44. }
  45. Future<void> showNotificationConfigPage() async {
  46. await AwesomeNotificationsHelper.showNotificationConfigPage();
  47. _initPushNotifications();
  48. }
  49. // 处理退出登录
  50. Future<void> handleLogout() async {
  51. await LoadingDialog.show(
  52. context: Get.context!,
  53. loadingText: Strings.loggingOut.tr,
  54. successText: Strings.logoutSuccessful.tr,
  55. onRequest: () async {
  56. // 执行你的异步请求
  57. await apiController.logout();
  58. },
  59. onSuccess: () {
  60. // 成功后的操作
  61. Get.back();
  62. },
  63. );
  64. }
  65. // 处理删除账户
  66. Future<void> handleDeleteAccount() async {
  67. await LoadingDialog.show(
  68. context: Get.context!,
  69. loadingText: Strings.deletingAccount.tr,
  70. successText: Strings.deleteAccountSuccessful.tr,
  71. onRequest: () async {
  72. // 执行你的异步请求
  73. await apiController.deleteAccount();
  74. },
  75. onSuccess: () {
  76. // 成功后的操作
  77. Get.back();
  78. },
  79. );
  80. }
  81. }