import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:location/utils/common_expand.dart'; import '../../data/bean/member_status_info.dart'; import '../../resource/string.gen.dart'; class MineTrialMembershipCountdownText extends StatefulWidget { final MemberStatusInfo? memberStatusInfo; final VoidCallback? trialHasExpiredCallBack; const MineTrialMembershipCountdownText({ super.key, this.memberStatusInfo, this.trialHasExpiredCallBack }); @override State createState() => _MineTrialMembershipCountdownTextState(); } class _MineTrialMembershipCountdownTextState extends State { late Timer _timer; String _countdownText = ''; @override void initState() { super.initState(); print("controllerffemberStatusInfos-B-${widget.memberStatusInfo}"); _updateTime(); // 创建倒计时定时器 if (widget.memberStatusInfo?.trialed == true && widget.memberStatusInfo?.level == 20 && (widget.memberStatusInfo?.trialEndTimestamp ?? 0) > 0 ) { // 计算剩余时间 DateTime remaining = DateTime.fromMillisecondsSinceEpoch(widget.memberStatusInfo!.trialEndTimestamp ?? 0); if (remaining.second > 0) { // 创建每秒更新一次的定时器 _timer = Timer.periodic(Duration(seconds: 1), (_) => _updateTime()); } } // _timer = Timer.periodic(widget.updateInterval, (_) => _updateTime()); } void _updateTime() { print("widgetemberStatusInforialedsfsfdjs---${widget.memberStatusInfo?.trialed}---${(widget.memberStatusInfo?.level ?? 0)}"); _countdownText = StringName.memberExperienceVip; if ((widget.memberStatusInfo?.trialed ?? false)) { ///正在使用 if ((widget.memberStatusInfo?.level ?? 0) == 20) { _countdownisInProgress(); } else { _timer.cancel(); if (widget.trialHasExpiredCallBack != null) { widget.trialHasExpiredCallBack!(); } //已经使用完了 _countdownText = StringName.memberTrialHasExpired; } } if (mounted) { setState(() {}); } } ///正在倒计时 void _countdownisInProgress() { if (widget.memberStatusInfo?.trialEndTimestamp == null) { _countdownText = StringName.memberExperienceVip; return; } // 将时间戳转换为DateTime /*DateTime endTime; if (widget.timestampInSeconds) { // 时间戳单位为秒 endTime = DateTime.fromMillisecondsSinceEpoch(widget.memberStatusInfo.endTimestamp! * 1000); } else { // 时间戳单位为毫秒 endTime = DateTime.fromMillisecondsSinceEpoch(widget.memberStatusInfo.endTimestamp!); }*/ DateTime endTime = DateTime.fromMillisecondsSinceEpoch(widget.memberStatusInfo!.trialEndTimestamp ?? 0); Duration remaining = endTime.difference(DateTime.now()); if (remaining.inSeconds <= 0) { _countdownText = StringName.memberTrialHasExpired; _timer.cancel(); } else { _countdownText = _formatDuration(remaining); _countdownText = '${StringName.memberCountdownRemaining} ${_countdownText} ${StringName.memberCountdownExperienceTime}'; } } String _formatDuration(Duration duration) { String twoDigits(int n) => n.toString().padLeft(2, '0'); String hours = twoDigits(duration.inHours); String minutes = twoDigits(duration.inMinutes.remainder(60)); String seconds = twoDigits(duration.inSeconds.remainder(60)); return '$hours:$minutes:$seconds'; } @override void dispose() { _timer.cancel(); super.dispose(); } @override Widget build(BuildContext context) { return Text( _countdownText, style: TextStyle( fontSize: 13.sp, color: "#8A5F03".color, fontWeight: FontWeight.bold ) ); } }