all_dialog.dart 6.8 KB

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