fix:增加发送过程中超时的问题

This commit is contained in:
liyi 2025-07-28 15:58:28 +08:00
parent b06e3b61c8
commit 617c7ad9b6
2 changed files with 74 additions and 1 deletions

View File

@ -34,6 +34,12 @@ class SpeechLanguageSettingsLogic extends BaseGetXController {
final SpeechLanguageSettingsState state = SpeechLanguageSettingsState();
StreamSubscription<Reply>? _replySubscription;
//
Timer? _sendTimeoutTimer;
//
bool _isTimeout = false;
@override
void onInit() async {
super.onInit();
@ -273,7 +279,39 @@ class SpeechLanguageSettingsLogic extends BaseGetXController {
_sendNextPackage();
}
void _handleSendTimeout() {
_isTimeout = true; //
dismissEasyLoading();
cancelBlueConnetctToastTimer();
showBlueConnetctToast();
//
state.voiceSubcontractingIndex = 0;
state.voiceSubcontractingCount = 0;
state.data = null;
state.progress.value = 0.0;
_isTimeout = false; //
}
void _sendNextPackage() async {
//
if (_isTimeout) return;
//
_sendTimeoutTimer?.cancel();
//
if (state.voiceSubcontractingIndex >= state.voiceSubcontractingCount) {
print('所有分包已发送完成');
state.progress.value = 1.0;
return;
}
// 3
_sendTimeoutTimer = Timer(Duration(seconds: 3), () {
_handleSendTimeout(); //
});
if (state.voiceSubcontractingIndex >= state.voiceSubcontractingCount) {
print('所有分包已发送完成');
state.progress.value = 1.0; //
@ -320,6 +358,9 @@ class SpeechLanguageSettingsLogic extends BaseGetXController {
void _handlerVoicePackageConfigureProcess(
VoicePackageConfigureProcessReply reply) {
//
_sendTimeoutTimer?.cancel();
_isTimeout = false; //
final int status = reply.data[2];
switch (status) {
case 0x00:
@ -386,7 +427,6 @@ class SpeechLanguageSettingsLogic extends BaseGetXController {
Future<void> _executeLogic(
VoicePackageConfigureConfirmationReply reply) async {
await _handlerVoicePackageConfigureConfirmation(reply);
dismissEasyLoading();
}
_handlerVoicePackageConfigureConfirmation(

View File

@ -31,6 +31,11 @@ class LockVoiceSettingLogic extends BaseGetXController {
LockVoiceSettingState state = LockVoiceSettingState();
StreamSubscription<Reply>? _replySubscription;
bool _isThrottled = false;
//
Timer? _sendTimeoutTimer;
//
bool _isTimeout = false;
@override
void onInit() async {
@ -168,6 +173,9 @@ class LockVoiceSettingLogic extends BaseGetXController {
void _handlerVoicePackageConfigureProcess(
VoicePackageConfigureProcessReply reply) {
//
_sendTimeoutTimer?.cancel();
_isTimeout = false; //
final int status = reply.data[2];
switch (status) {
case 0x00:
@ -300,8 +308,27 @@ class LockVoiceSettingLogic extends BaseGetXController {
state.progress.value = 0.0; //
_sendNextPackage();
}
void _handleSendTimeout() {
_isTimeout = true; //
dismissEasyLoading();
cancelBlueConnetctToastTimer();
showBlueConnetctToast();
//
state.voiceSubcontractingIndex = 0;
state.voiceSubcontractingCount = 0;
state.data = null;
state.progress.value = 0.0;
_isTimeout = false; //
}
void _sendNextPackage() {
//
if (_isTimeout) return;
//
_sendTimeoutTimer?.cancel();
if (state.voiceSubcontractingIndex >= state.voiceSubcontractingCount) {
print('所有分包已发送完成');
state.progress.value = 1.0; //
@ -309,6 +336,12 @@ class LockVoiceSettingLogic extends BaseGetXController {
return;
}
// 3
_sendTimeoutTimer = Timer(Duration(seconds: 3), () {
_handleSendTimeout(); //
});
int start = state.voiceSubcontractingIndex * state.voiceSubcontractingSize;
int end = start + state.voiceSubcontractingSize;
if (end > state.data!.length) end = state.data!.length;