From b06e3b61c89ab174e157bea5928aada49d4fdfab Mon Sep 17 00:00:00 2001 From: liyi Date: Mon, 28 Jul 2025 15:07:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8D=E8=BF=9B=E5=85=A5?= =?UTF-8?q?=E8=AF=AD=E9=9F=B3=E5=8C=85=E8=AE=BE=E7=BD=AE=E6=97=B6=E4=B8=8D?= =?UTF-8?q?=E8=BF=9B=E8=A1=8C=E6=9B=B4=E6=96=B0=E9=80=89=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../speech_language_settings_logic.dart | 51 +++++++++++++++---- 1 file changed, 41 insertions(+), 10 deletions(-) diff --git a/lib/main/lockDetail/lockSet/speechLanguageSettings/speech_language_settings_logic.dart b/lib/main/lockDetail/lockSet/speechLanguageSettings/speech_language_settings_logic.dart index 781df709..8a75a1bd 100644 --- a/lib/main/lockDetail/lockSet/speechLanguageSettings/speech_language_settings_logic.dart +++ b/lib/main/lockDetail/lockSet/speechLanguageSettings/speech_language_settings_logic.dart @@ -45,10 +45,9 @@ class SpeechLanguageSettingsLogic extends BaseGetXController { } else if (reply is VoicePackageConfigureProcessReply) { _handlerVoicePackageConfigureProcess(reply); } else if (reply is VoicePackageConfigureConfirmationReply) { - _handlerVoicePackageConfigureConfirmation(reply); + handleVoiceConfigureThrottled(reply); } }); - await initList(); } @@ -110,14 +109,22 @@ class SpeechLanguageSettingsLogic extends BaseGetXController { .lockSetInfoData.value.lockSettingInfo?.currentVoiceTimbre?.lang; final timbre = state .lockSetInfoData.value.lockSettingInfo?.currentVoiceTimbre?.timbre; - state.languages.value.forEach((element) { - final timbres = element.timbres; - timbres.forEach((item) { - if (lang == element.lang && item.timbre == timbre) { - state.selectSoundTypeIndex.value = item.isFemale; + // 传统 for 循环,直接通过索引访问 + for (int i = 0; i < state.languages.length; i++) { + final language = state.languages[i]; // 当前元素 + if (language.lang == lang) { + print('匹配到下标:$i,元素:$language'); + final timbres = language.timbres; + for (int j = 0; j < timbres.length; j++) { + final item = timbres[j]; + if (lang == language.lang && item.timbre == timbre) { + state.selectSoundTypeIndex.value = item.isFemale; + state.selectPassthroughListIndex.value = i; + break; + } } - }); - }); + } + } } } catch (e) { debugPrint('获取语音包出现错误:$e'); @@ -358,7 +365,31 @@ class SpeechLanguageSettingsLogic extends BaseGetXController { super.onClose(); } - void _handlerVoicePackageConfigureConfirmation( + bool _isThrottled = false; + + void handleVoiceConfigureThrottled( + VoicePackageConfigureConfirmationReply reply, + ) { + if (_isThrottled) return; + + _isThrottled = true; + + // 执行你的逻辑 + _executeLogic(reply); + + // 设置节流时间(比如 1 秒) + Future.delayed(Duration(seconds: 1), () { + _isThrottled = false; + }); + } + + Future _executeLogic( + VoicePackageConfigureConfirmationReply reply) async { + await _handlerVoicePackageConfigureConfirmation(reply); + dismissEasyLoading(); + } + + _handlerVoicePackageConfigureConfirmation( VoicePackageConfigureConfirmationReply reply, ) async { final int status = reply.data[2];