| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332 |
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:nomo/app/constants/assets.dart';
- import 'package:nomo/config/theme/theme_extensions/theme_extension.dart';
- import 'package:nomo/config/translations/strings_enum.dart';
- import '../../config/theme/dark_theme_colors.dart';
- import '../../utils/system_helper.dart';
- import '../constants/iconfont/iconfont.dart';
- import '../data/models/launch/upgrade.dart';
- import '../routes/app_pages.dart';
- import 'custom_dialog.dart';
- /// 弹窗使用示例
- class AllDialog {
- /// 显示绑定邮箱/会员权益弹窗
- static void showBindEmailMemberBenefits() {
- final isLight = ReactiveTheme.isLightTheme;
- CustomDialog.showError(
- title: Strings.associatedInterests.tr,
- message: Strings.associatedInterestsDesc.tr,
- icon: IconFont.icon23,
- iconColor: isLight
- ? Get.reactiveTheme.primaryColor
- : DarkThemeColors.subscriptionColor,
- titleColor: isLight ? Get.reactiveTheme.primaryColor : null,
- buttonText: Strings.signup.tr,
- cancelText: Strings.cancel.tr,
- onPressed: () {
- // 处理重试逻辑
- Navigator.of(Get.context!).pop();
- Get.toNamed(Routes.SIGNUP);
- },
- onCancel: () {
- // 处理取消逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示Premium激活成功弹窗
- static void showPremiumActivated() {
- CustomDialog.showSuccess(
- title: Strings.premiumActivated.tr,
- message: Strings.premiumActivatedMessage.tr,
- buttonText: Strings.gotIt.tr,
- icon: Icons.workspace_premium,
- iconColor: const Color(0xFFFF9500),
- onPressed: () {
- // 处理激活成功后的逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示邮件发送成功弹窗
- static void showEmailSent() {
- CustomDialog.showInfo(
- title: Strings.emailSent.tr,
- message: Strings.emailSentMessage.tr,
- buttonText: Strings.ok.tr,
- icon: Icons.mark_email_read,
- iconColor: Colors.white,
- onPressed: () {
- // 处理邮件发送成功后的逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示网络连接错误弹窗
- static void showNetworkError() {
- CustomDialog.showError(
- title: Strings.noInternetConnection.tr,
- message: Strings.noInternetMessage.tr,
- buttonText: Strings.retry.tr,
- cancelText: Strings.cancel.tr,
- icon: Icons.wifi_off,
- iconColor: const Color.fromARGB(255, 231, 152, 5),
- confirmButtonColor: Get.reactiveTheme.primaryColor,
- errorCode: '',
- onPressed: () {
- // 处理重试逻辑
- Navigator.of(Get.context!).pop();
- },
- onCancel: () {
- // 处理取消逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示退出登录确认弹窗
- static void showLogoutConfirm(Function() onLogout) {
- CustomDialog.showError(
- title: Strings.logOut.tr,
- message: Strings.logOutConfirmMessage.tr,
- buttonText: Strings.logOut.tr,
- cancelText: Strings.cancel.tr,
- icon: Icons.info_outline,
- iconColor: DarkThemeColors.errorColor,
- titleColor: DarkThemeColors.errorColor,
- confirmButtonColor: DarkThemeColors.errorColor,
- onPressed: () {
- // 处理退出登录逻辑
- Navigator.of(Get.context!).pop();
- onLogout();
- },
- onCancel: () {
- // 处理取消退出逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示反馈弹窗
- static void showFeedback() {
- CustomDialog.showInfo(
- title: Strings.thankYouFeedback.tr,
- message: Strings.feedbackMessage.tr,
- buttonText: Strings.done.tr,
- icon: Icons.favorite_border,
- iconColor: Get.theme.textTheme.bodyLarge!.color,
- onPressed: () {
- // 处理邮件发送成功后的逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示UID信息弹窗
- static void showUidInfo() {
- final isLight = ReactiveTheme.isLightTheme;
- CustomDialog.showInfo(
- icon: IconFont.icon14,
- iconColor: isLight
- ? Get.reactiveTheme.primaryColor
- : Get.theme.textTheme.bodyLarge!.color,
- titleColor: isLight ? Get.reactiveTheme.primaryColor : null,
- title: Strings.whatIsUid.tr,
- message: Strings.uidMessage.tr,
- messageColor: Get.theme.textTheme.bodyLarge!.color,
- buttonText: Strings.ok.tr,
- onPressed: () {
- // 处理邮件发送成功后的逻辑
- print('UID info dialog closed');
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示无效授权码弹窗
- static void showInvalidAuthorizationCode() {
- CustomDialog.showError(
- title: Strings.invalidAuthorizationCode.tr,
- message: Strings.invalidAuthorizationCodeMessage.tr,
- buttonText: Strings.invalidAuthorizationCodeButton.tr,
- onPressed: () {
- // 处理重试逻辑
- Navigator.of(Get.context!).pop();
- },
- onCancel: () {
- // 处理取消逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- // 显示删除账户确认弹窗
- static void showDeleteAccountConfirm(Function() onDeleteAccount) {
- CustomDialog.showError(
- title: Strings.deleteAccount.tr,
- message: Strings.deleteAccountConfirmMessage.tr,
- buttonText: Strings.deleteAccount.tr,
- cancelText: Strings.cancel.tr,
- icon: IconFont.icon40,
- iconColor: DarkThemeColors.errorColor,
- titleColor: DarkThemeColors.errorColor,
- confirmButtonColor: DarkThemeColors.errorColor,
- onPressed: () {
- // 处理删除账户逻辑
- Navigator.of(Get.context!).pop();
- onDeleteAccount();
- },
- onCancel: () {
- // 处理取消删除账户逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示更新弹窗
- static void showUpdate(Upgrade upgrade, {bool hasForceUpdate = false}) {
- final isLight = ReactiveTheme.isLightTheme;
- CustomDialog.showUpdateDialog(
- title: Strings.newVersionAvailable.tr,
- iconColor: isLight ? Get.reactiveTheme.primaryColor : null,
- titleColor: isLight ? Get.reactiveTheme.primaryColor : null,
- message: upgrade.info ?? '',
- buttonText: Strings.upgradeNow.tr,
- cancelText: hasForceUpdate ? null : Strings.cancel.tr,
- onCancel: () {
- Navigator.of(Get.context!).pop();
- },
- svgPath: Assets.update,
- onPressed: () {
- Navigator.of(Get.context!).pop();
- if (upgrade.appStoreUrl?.isNotEmpty ?? false) {
- SystemHelper.openGooglePlayUrl(upgrade.appStoreUrl ?? '');
- } else if (upgrade.websiteUrl?.isNotEmpty ?? false) {
- SystemHelper.openGooglePlayUrl(upgrade.websiteUrl ?? '');
- }
- },
- );
- }
- /// 显示会员过期弹窗
- static void showMembershipExpired() {
- final isLight = ReactiveTheme.isLightTheme;
- CustomDialog.showError(
- title: Strings.membershipExpired.tr,
- message: Strings.membershipExpiredMessage.tr,
- icon: IconFont.icon23,
- iconColor: isLight
- ? Get.reactiveTheme.primaryColor
- : DarkThemeColors.subscriptionColor,
- titleColor: isLight ? Get.reactiveTheme.primaryColor : null,
- buttonText: Strings.subscribeNow.tr,
- cancelText: Strings.cancel.tr,
- onPressed: () {
- // 处理重试逻辑
- Navigator.of(Get.context!).pop();
- Get.toNamed(Routes.SUBSCRIPTION);
- },
- onCancel: () {
- // 处理取消逻辑
- Navigator.of(Get.context!).pop();
- },
- );
- }
- /// 显示订阅网页弹窗
- static void showSubscriptionForWeb(Function() onRefresh) {
- final isLight = ReactiveTheme.isLightTheme;
- CustomDialog.showInfo(
- title: Strings.subscriptionForWebTitle.tr,
- message: Strings.subscriptionForWebMessage.tr,
- icon: IconFont.icon23,
- iconColor: isLight
- ? Get.reactiveTheme.primaryColor
- : DarkThemeColors.subscriptionColor,
- titleColor: isLight ? Get.reactiveTheme.primaryColor : null,
- buttonText: Strings.ok.tr,
- onPressed: () {
- // 处理重试逻辑
- Navigator.of(Get.context!).pop();
- onRefresh();
- },
- );
- }
- /// 显示自定义成功弹窗
- static void showCustomSuccess({
- required String title,
- required String message,
- String? buttonText,
- VoidCallback? onPressed,
- }) {
- CustomDialog.showSuccess(
- title: title,
- message: message,
- buttonText: buttonText ?? Strings.gotIt.tr,
- onPressed: onPressed,
- );
- }
- /// 显示自定义信息弹窗
- static void showCustomInfo({
- required String title,
- required String message,
- String? buttonText,
- VoidCallback? onPressed,
- }) {
- CustomDialog.showInfo(
- title: title,
- message: message,
- buttonText: buttonText ?? Strings.ok.tr,
- onPressed: onPressed,
- );
- }
- /// 显示自定义错误弹窗
- static void showCustomError({
- required String title,
- required String message,
- String? buttonText,
- String? cancelText,
- VoidCallback? onPressed,
- VoidCallback? onCancel,
- String? errorCode,
- }) {
- CustomDialog.showError(
- title: title,
- message: message,
- buttonText: buttonText ?? Strings.retry.tr,
- cancelText: cancelText,
- onPressed: onPressed,
- onCancel: onCancel,
- errorCode: errorCode,
- );
- }
- /// 显示自定义确认弹窗
- static void showCustomConfirm({
- required String title,
- required String message,
- String? confirmText,
- String? cancelText,
- required VoidCallback onConfirm,
- VoidCallback? onCancel,
- Color? confirmButtonColor,
- }) {
- CustomDialog.showConfirm(
- title: title,
- message: message,
- confirmText: confirmText ?? Strings.confirm.tr,
- cancelText: cancelText ?? Strings.cancel.tr,
- onConfirm: onConfirm,
- onCancel: onCancel,
- confirmButtonColor: confirmButtonColor,
- );
- }
- }
|