diff --git a/lib/pages/practice/bloc/topic_picture_bloc.dart b/lib/pages/practice/bloc/topic_picture_bloc.dart index 8cd7c33..08455b5 100644 --- a/lib/pages/practice/bloc/topic_picture_bloc.dart +++ b/lib/pages/practice/bloc/topic_picture_bloc.dart @@ -20,6 +20,7 @@ import '../../../common/permission/permissionRequester.dart'; import '../../../common/utils/show_star_reward_dialog.dart'; import '../../../models/voice_result_type.dart'; import '../../../route/route.dart'; +import '../../../utils/log_util.dart'; part 'topic_picture_event.dart'; @@ -40,7 +41,7 @@ enum VoicePlayState { } class TopicPictureBloc - extends BaseSectionBloc { + extends BaseSectionBloc with WidgetsBindingObserver { final PageController pageController; final String courseLessonId; @@ -151,15 +152,31 @@ class TopicPictureBloc return; } }); + + WidgetsBinding.instance.addObserver(this); }); } @override + Future didChangeAppLifecycleState(AppLifecycleState state) async { + super.didChangeAppLifecycleState(state); + Log.d('TopicPictureBloc didChangeAppLifecycleState state=$state'); + if (state == AppLifecycleState.paused) { + ///切到后台暂停音频播放、录音等 + if (audioPlayer.state == PlayerState.playing) { + await audioPlayer.pause(); + } + _voiceXsCancel(); + } + } + + @override Future close() { pageController.dispose(); audioPlayer.release(); audioPlayer.dispose(); _voiceXsCancel(); + WidgetsBinding.instance.removeObserver(this); return super.close(); }