Browse Source

[new]活动倒计时调整为毫秒

zk 3 months ago
parent
commit
6f3317e7ba

+ 7 - 3
lib/data/repositories/member_repository.dart

@@ -60,13 +60,17 @@ class MemberRepository {
     }
     }
     _isActivityCountdownRunning = true;
     _isActivityCountdownRunning = true;
     activityDuration.value = Duration(minutes: 15);
     activityDuration.value = Duration(minutes: 15);
-    _timer = Timer.periodic(const Duration(seconds: 1), (_) {
+    activityDuration.value = const Duration(minutes: 15);
+
+    _timer = Timer.periodic(const Duration(milliseconds: 2), (_) {
       final time = activityDuration.value;
       final time = activityDuration.value;
       if (time != null) {
       if (time != null) {
-        if (time.inSeconds <= 1) {
+        if (time.inMilliseconds <= 10) {
           clearLastSelectedMember();
           clearLastSelectedMember();
+          _timer?.cancel();
         } else {
         } else {
-          activityDuration.value = Duration(seconds: time.inSeconds - 1);
+          activityDuration.value =
+              Duration(milliseconds: time.inMilliseconds - 2);
         }
         }
       }
       }
     });
     });

+ 2 - 2
lib/module/member/activity/member_activity_page.dart

@@ -332,8 +332,8 @@ class MemberActivityPage extends BasePage<MemberActivityController> {
                         Obx(() {
                         Obx(() {
                           return ActivityCountdownTextView(
                           return ActivityCountdownTextView(
                               timeItemHeight: 15.w,
                               timeItemHeight: 15.w,
-                              contentPadding: EdgeInsets.zero,
-                              timeItemWidth: 16.w,
+                              contentPadding:
+                                  EdgeInsets.symmetric(horizontal: 2.w),
                               textStyle: TextStyle(
                               textStyle: TextStyle(
                                   fontSize: 10.sp, color: Colors.white),
                                   fontSize: 10.sp, color: Colors.white),
                               duration: controller.activityDuration ??
                               duration: controller.activityDuration ??

+ 7 - 6
lib/widget/activity_countdown_txt_view.dart

@@ -1,4 +1,3 @@
-import 'dart:async';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 
 
 class ActivityCountdownTextView extends StatefulWidget {
 class ActivityCountdownTextView extends StatefulWidget {
@@ -49,25 +48,28 @@ class _ActivityCountdownTxtViewState extends State<ActivityCountdownTextView> {
 
 
   String _twoDigits(int n) => n.toString().padLeft(2, '0');
   String _twoDigits(int n) => n.toString().padLeft(2, '0');
 
 
+  /// 毫秒显示三位 (000–999)
+  String _threeDigitsMilli(int n) => n.toString().padLeft(3, '0');
+
   @override
   @override
   Widget build(BuildContext context) {
   Widget build(BuildContext context) {
-    final hours = _twoDigits(_remaining.inHours);
     final minutes = _twoDigits(_remaining.inMinutes.remainder(60));
     final minutes = _twoDigits(_remaining.inMinutes.remainder(60));
     final seconds = _twoDigits(_remaining.inSeconds.remainder(60));
     final seconds = _twoDigits(_remaining.inSeconds.remainder(60));
+    final milliseconds =
+        _threeDigitsMilli(_remaining.inMilliseconds.remainder(1000));
 
 
     return Row(
     return Row(
       mainAxisSize: MainAxisSize.min,
       mainAxisSize: MainAxisSize.min,
       children: [
       children: [
-        _buildTimeBox(hours),
-        _buildSeparator(),
         _buildTimeBox(minutes),
         _buildTimeBox(minutes),
         _buildSeparator(),
         _buildSeparator(),
         _buildTimeBox(seconds),
         _buildTimeBox(seconds),
+        _buildSeparator(),
+        _buildTimeBox(milliseconds),
       ],
       ],
     );
     );
   }
   }
 
 
-  /// 自定义时间数字块,2位合并显示
   Widget _buildTimeBox(String text) {
   Widget _buildTimeBox(String text) {
     return Container(
     return Container(
       width: widget.timeItemWidth,
       width: widget.timeItemWidth,
@@ -85,7 +87,6 @@ class _ActivityCountdownTxtViewState extends State<ActivityCountdownTextView> {
     );
     );
   }
   }
 
 
-  /// 自定义分隔符(冒号),如果未设置就给默认间距
   Widget _buildSeparator() {
   Widget _buildSeparator() {
     return widget.separator ??
     return widget.separator ??
         const SizedBox(
         const SizedBox(