all_dialog.dart 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. import 'package:flutter/material.dart';
  2. import 'package:get/get.dart';
  3. import 'package:nomo/app/constants/assets.dart';
  4. import 'package:nomo/config/theme/theme_extensions/theme_extension.dart';
  5. import 'package:nomo/config/translations/strings_enum.dart';
  6. import '../../config/theme/dark_theme_colors.dart';
  7. import '../../utils/system_helper.dart';
  8. import '../constants/iconfont/iconfont.dart';
  9. import '../data/models/launch/upgrade.dart';
  10. import 'custom_dialog.dart';
  11. /// 弹窗使用示例
  12. class AllDialog {
  13. /// 显示绑定邮箱/会员权益弹窗
  14. static void showBindEmailMemberBenefits() {
  15. CustomDialog.showInfo(
  16. title: Strings.bindEmailMemberBenefits.tr,
  17. message: Strings.bindingAccountEmailProtectsPreRights.tr,
  18. icon: IconFont.icon23,
  19. iconColor: DarkThemeColors.subscriptionColor,
  20. );
  21. }
  22. /// 显示Premium激活成功弹窗
  23. static void showPremiumActivated() {
  24. CustomDialog.showSuccess(
  25. title: Strings.premiumActivated.tr,
  26. message: Strings.premiumActivatedMessage.tr,
  27. buttonText: Strings.gotIt.tr,
  28. icon: Icons.workspace_premium,
  29. iconColor: const Color(0xFFFF9500),
  30. onPressed: () {
  31. // 处理激活成功后的逻辑
  32. Navigator.of(Get.context!).pop();
  33. },
  34. );
  35. }
  36. /// 显示邮件发送成功弹窗
  37. static void showEmailSent() {
  38. CustomDialog.showInfo(
  39. title: Strings.emailSent.tr,
  40. message: Strings.emailSentMessage.tr,
  41. buttonText: Strings.ok.tr,
  42. icon: Icons.mark_email_read,
  43. iconColor: Colors.white,
  44. onPressed: () {
  45. // 处理邮件发送成功后的逻辑
  46. Navigator.of(Get.context!).pop();
  47. },
  48. );
  49. }
  50. /// 显示网络连接错误弹窗
  51. static void showNetworkError() {
  52. CustomDialog.showError(
  53. title: Strings.noInternetConnection.tr,
  54. message: Strings.noInternetMessage.tr,
  55. buttonText: Strings.retry.tr,
  56. cancelText: Strings.cancel.tr,
  57. icon: Icons.wifi_off,
  58. iconColor: const Color.fromARGB(255, 231, 152, 5),
  59. confirmButtonColor: Get.reactiveTheme.primaryColor,
  60. errorCode: '',
  61. onPressed: () {
  62. // 处理重试逻辑
  63. Navigator.of(Get.context!).pop();
  64. },
  65. onCancel: () {
  66. // 处理取消逻辑
  67. Navigator.of(Get.context!).pop();
  68. },
  69. );
  70. }
  71. /// 显示退出登录确认弹窗
  72. static void showLogoutConfirm(Function() onLogout) {
  73. CustomDialog.showError(
  74. title: Strings.logOut.tr,
  75. message: Strings.logOutConfirmMessage.tr,
  76. buttonText: Strings.logOut.tr,
  77. cancelText: Strings.cancel.tr,
  78. icon: Icons.info_outline,
  79. iconColor: const Color(0xFFFF3B30),
  80. confirmButtonColor: const Color(0xFFFF3B30),
  81. onPressed: () {
  82. // 处理退出登录逻辑
  83. Navigator.of(Get.context!).pop();
  84. onLogout();
  85. },
  86. onCancel: () {
  87. // 处理取消退出逻辑
  88. Navigator.of(Get.context!).pop();
  89. },
  90. );
  91. }
  92. /// 显示反馈弹窗
  93. static void showFeedback() {
  94. CustomDialog.showInfo(
  95. title: Strings.thankYouFeedback.tr,
  96. message: Strings.feedbackMessage.tr,
  97. buttonText: Strings.done.tr,
  98. icon: Icons.favorite_border,
  99. iconColor: Get.theme.textTheme.bodyLarge!.color,
  100. onPressed: () {
  101. // 处理邮件发送成功后的逻辑
  102. Navigator.of(Get.context!).pop();
  103. },
  104. );
  105. }
  106. /// 显示UID信息弹窗
  107. static void showUidInfo() {
  108. CustomDialog.showInfo(
  109. icon: IconFont.icon14,
  110. iconColor: Get.theme.textTheme.bodyLarge!.color,
  111. title: Strings.whatIsUid.tr,
  112. message: Strings.uidMessage.tr,
  113. buttonText: Strings.ok.tr,
  114. onPressed: () {
  115. // 处理邮件发送成功后的逻辑
  116. print('UID info dialog closed');
  117. Navigator.of(Get.context!).pop();
  118. },
  119. );
  120. }
  121. /// 显示无效授权码弹窗
  122. static void showInvalidAuthorizationCode() {
  123. CustomDialog.showError(
  124. title: Strings.invalidAuthorizationCode.tr,
  125. message: Strings.invalidAuthorizationCodeMessage.tr,
  126. buttonText: Strings.invalidAuthorizationCodeButton.tr,
  127. onPressed: () {
  128. // 处理重试逻辑
  129. Navigator.of(Get.context!).pop();
  130. },
  131. onCancel: () {
  132. // 处理取消逻辑
  133. Navigator.of(Get.context!).pop();
  134. },
  135. );
  136. }
  137. // 显示删除账户确认弹窗
  138. static void showDeleteAccountConfirm(Function() onDeleteAccount) {
  139. CustomDialog.showError(
  140. title: Strings.deleteAccount.tr,
  141. message: Strings.deleteAccountConfirmMessage.tr,
  142. buttonText: Strings.deleteAccount.tr,
  143. cancelText: Strings.cancel.tr,
  144. icon: IconFont.icon40,
  145. iconColor: DarkThemeColors.deleteAccountIconColor,
  146. onPressed: () {
  147. // 处理删除账户逻辑
  148. Navigator.of(Get.context!).pop();
  149. onDeleteAccount();
  150. },
  151. onCancel: () {
  152. // 处理取消删除账户逻辑
  153. Navigator.of(Get.context!).pop();
  154. },
  155. );
  156. }
  157. /// 显示更新弹窗
  158. static void showUpdate(Upgrade upgrade, {bool hasForceUpdate = false}) {
  159. CustomDialog.showUpdateDialog(
  160. title: Strings.newVersionAvailable.tr,
  161. message: upgrade.info ?? '',
  162. buttonText: Strings.upgradeNow.tr,
  163. cancelText: hasForceUpdate ? null : Strings.cancel.tr,
  164. onCancel: () {
  165. Navigator.of(Get.context!).pop();
  166. },
  167. svgPath: Assets.update,
  168. onPressed: () {
  169. Navigator.of(Get.context!).pop();
  170. if (upgrade.appStoreUrl?.isNotEmpty ?? false) {
  171. SystemHelper.openGooglePlayUrl(upgrade.appStoreUrl ?? '');
  172. } else if (upgrade.websiteUrl?.isNotEmpty ?? false) {
  173. SystemHelper.openGooglePlayUrl(upgrade.websiteUrl ?? '');
  174. }
  175. },
  176. );
  177. }
  178. /// 显示自定义成功弹窗
  179. static void showCustomSuccess({
  180. required String title,
  181. required String message,
  182. String? buttonText,
  183. VoidCallback? onPressed,
  184. }) {
  185. CustomDialog.showSuccess(
  186. title: title,
  187. message: message,
  188. buttonText: buttonText ?? Strings.gotIt.tr,
  189. onPressed: onPressed,
  190. );
  191. }
  192. /// 显示自定义信息弹窗
  193. static void showCustomInfo({
  194. required String title,
  195. required String message,
  196. String? buttonText,
  197. VoidCallback? onPressed,
  198. }) {
  199. CustomDialog.showInfo(
  200. title: title,
  201. message: message,
  202. buttonText: buttonText ?? Strings.ok.tr,
  203. onPressed: onPressed,
  204. );
  205. }
  206. /// 显示自定义错误弹窗
  207. static void showCustomError({
  208. required String title,
  209. required String message,
  210. String? buttonText,
  211. String? cancelText,
  212. VoidCallback? onPressed,
  213. VoidCallback? onCancel,
  214. String? errorCode,
  215. }) {
  216. CustomDialog.showError(
  217. title: title,
  218. message: message,
  219. buttonText: buttonText ?? Strings.retry.tr,
  220. cancelText: cancelText,
  221. onPressed: onPressed,
  222. onCancel: onCancel,
  223. errorCode: errorCode,
  224. );
  225. }
  226. /// 显示自定义确认弹窗
  227. static void showCustomConfirm({
  228. required String title,
  229. required String message,
  230. String? confirmText,
  231. String? cancelText,
  232. required VoidCallback onConfirm,
  233. VoidCallback? onCancel,
  234. Color? confirmButtonColor,
  235. }) {
  236. CustomDialog.showConfirm(
  237. title: title,
  238. message: message,
  239. confirmText: confirmText ?? Strings.confirm.tr,
  240. cancelText: cancelText ?? Strings.cancel.tr,
  241. onConfirm: onConfirm,
  242. onCancel: onCancel,
  243. confirmButtonColor: confirmButtonColor,
  244. );
  245. }
  246. }