diff --git a/android/app/src/main/kotlin/com/kouyuxingqiu/wow_english/methodChannels/SingSoungMethodChannel.kt b/android/app/src/main/kotlin/com/kouyuxingqiu/wow_english/methodChannels/SingSoungMethodChannel.kt index 964598d..db16ab7 100644 --- a/android/app/src/main/kotlin/com/kouyuxingqiu/wow_english/methodChannels/SingSoungMethodChannel.kt +++ b/android/app/src/main/kotlin/com/kouyuxingqiu/wow_english/methodChannels/SingSoungMethodChannel.kt @@ -94,4 +94,10 @@ class SingSoungMethodChannel(activity: FlutterActivity, flutterEngine: FlutterEn invokeMethod("voiceEnd", null) } } + + override fun onCancel() { + GlobalHandler.runOnMainThread { + invokeMethod("voiceCancel", null) + } + } } \ No newline at end of file diff --git a/lib/pages/reading/bloc/reading_bloc.dart b/lib/pages/reading/bloc/reading_bloc.dart index 19e170b..d6a6dc4 100644 --- a/lib/pages/reading/bloc/reading_bloc.dart +++ b/lib/pages/reading/bloc/reading_bloc.dart @@ -139,10 +139,10 @@ class ReadingPageBloc return; } - if (call.method == 'voiceEnd') { - //评测结束 + if (call.method == 'voiceEnd' || call.method == 'voiceCancel') { + //评测结束or评测取消 if (kDebugMode) { - print('评测结束'); + print(call.method == 'voiceEnd' ? '评测结束' : '评测取消'); } _isRecording = false; add(OnXSVoiceStateChangeEvent()); @@ -151,6 +151,7 @@ class ReadingPageBloc if (call.method == 'voiceFail') { //评测失败 + _isRecording = false; EasyLoading.showToast('评测失败'); return; } @@ -179,9 +180,8 @@ class ReadingPageBloc void _pageControllerChange(CurrentPageIndexChangeEvent event, Emitter emitter) async { _currentPage = event.pageIndex; - debugPrint("WQF _playOriginalAudioInner begin"); + _voiceXsCancel(); _playOriginalAudioInner(null); - debugPrint("WQF _playOriginalAudioInner end"); emitter(CurrentPageIndexState()); } @@ -229,7 +229,7 @@ class ReadingPageBloc await audioPlayer.stop(); } else { _isOriginAudioPlaying = true; - debugPrint("WQF _playOriginalAudioInner _isOriginAudioPlaying: true"); + Log.d("_playOriginalAudioInner _isOriginAudioPlaying: true"); audioUrl ??= currentPageData()?.audioUrl ?? ''; _playAudio(audioUrl); } @@ -355,7 +355,10 @@ class ReadingPageBloc ///取消评测(用于处理退出页面后录音未停止等异常情况的保护操作) void _voiceXsCancel() { - methodChannel.invokeMethod('cancelVoice'); + Log.d("取消评测 _voiceXsCancel _isRecording=$_isRecording"); + if (_isRecording) { + methodChannel.invokeMethod('cancelVoice'); + } } void _voicePlayStateChange(VoicePlayStateChangeEvent event,