Browse Source

fix:解决弹出多次弹窗的问题。

“HeShaoZe” 4 months ago
parent
commit
9538302753

+ 23 - 9
lib/module/mine/mine_countdown_timer_manager.dart

@@ -17,6 +17,8 @@ class MineCountdownTimerManager {
   final Map<String, StreamController<String>> _streamControllers = {};
   final Map<String, Completer<void>> _completers = {};
 
+  var areShowAlartView = true;
+
   /// 启动倒计时
   Future<void> startCountdown({
     required String key, // 倒计时唯一标识
@@ -57,16 +59,28 @@ class MineCountdownTimerManager {
         _completers[key]?.complete();
         _completers.remove(key);
 
-        ///弹出提示框
-        MemberRepository memberRepository = MemberRepository.getInstance();
-        memberRepository
-            .memberTrailInfo()
-            .then((infoRespons) {
-          MineExpirationReminderDialog.show(infoResponse: infoRespons,onDic: () {
-            MemberPage.start(enterTyp: MemberPageType.afeterTrialMemberEnter);
+        if (areShowAlartView) {
+          areShowAlartView = false;
+          ///弹出提示框
+          MemberRepository memberRepository = MemberRepository.getInstance();
+          memberRepository
+              .memberTrailInfo()
+              .then((infoRespons) {
+            MineExpirationReminderDialog.show(infoResponse: infoRespons,
+                onDic: () {
+                  areShowAlartView = true;
+                  MemberPage.start(enterTyp: MemberPageType.afeterTrialMemberEnter);
+                },
+                cancelOnTap: () {
+                  areShowAlartView = true;
+                }
+            );
+            //MineExpirationReminderDialog.show(infoResponse: infoResponse);
+          }).catchError((){
+            areShowAlartView = true;
           });
-          //MineExpirationReminderDialog.show(infoResponse: infoResponse);
-        }).catchError((){});
+        }
+
       } else {
         // 发送更新通知
         String formattedTime = formatDuration(newRemaining);

+ 3 - 0
lib/module/mine/mine_expiration_reminder_dialog.dart

@@ -30,6 +30,9 @@ class MineExpirationReminderDialog {
                 infoResponse: infoResponse,
                 cancelOnTap: () {
                   Get.back();
+                  if (cancelOnTap != null) {
+                    cancelOnTap();
+                  }
                 },
                 confirmOnTap: onDic)
           ],