Commit d100908ac69cec7836e8e5ed486e36bc33716e4d
1 parent
9e14f47a
feat:解决练习切后台后音频未暂停问题
Showing
1 changed file
with
18 additions
and
1 deletions
lib/pages/practice/bloc/topic_picture_bloc.dart
@@ -20,6 +20,7 @@ import '../../../common/permission/permissionRequester.dart'; | @@ -20,6 +20,7 @@ import '../../../common/permission/permissionRequester.dart'; | ||
20 | import '../../../common/utils/show_star_reward_dialog.dart'; | 20 | import '../../../common/utils/show_star_reward_dialog.dart'; |
21 | import '../../../models/voice_result_type.dart'; | 21 | import '../../../models/voice_result_type.dart'; |
22 | import '../../../route/route.dart'; | 22 | import '../../../route/route.dart'; |
23 | +import '../../../utils/log_util.dart'; | ||
23 | 24 | ||
24 | part 'topic_picture_event.dart'; | 25 | part 'topic_picture_event.dart'; |
25 | 26 | ||
@@ -40,7 +41,7 @@ enum VoicePlayState { | @@ -40,7 +41,7 @@ enum VoicePlayState { | ||
40 | } | 41 | } |
41 | 42 | ||
42 | class TopicPictureBloc | 43 | class TopicPictureBloc |
43 | - extends BaseSectionBloc<TopicPictureEvent, TopicPictureState> { | 44 | + extends BaseSectionBloc<TopicPictureEvent, TopicPictureState> with WidgetsBindingObserver { |
44 | final PageController pageController; | 45 | final PageController pageController; |
45 | 46 | ||
46 | final String courseLessonId; | 47 | final String courseLessonId; |
@@ -151,15 +152,31 @@ class TopicPictureBloc | @@ -151,15 +152,31 @@ class TopicPictureBloc | ||
151 | return; | 152 | return; |
152 | } | 153 | } |
153 | }); | 154 | }); |
155 | + | ||
156 | + WidgetsBinding.instance.addObserver(this); | ||
154 | }); | 157 | }); |
155 | } | 158 | } |
156 | 159 | ||
157 | @override | 160 | @override |
161 | + Future<void> didChangeAppLifecycleState(AppLifecycleState state) async { | ||
162 | + super.didChangeAppLifecycleState(state); | ||
163 | + Log.d('TopicPictureBloc didChangeAppLifecycleState state=$state'); | ||
164 | + if (state == AppLifecycleState.paused) { | ||
165 | + ///切到后台暂停音频播放、录音等 | ||
166 | + if (audioPlayer.state == PlayerState.playing) { | ||
167 | + await audioPlayer.pause(); | ||
168 | + } | ||
169 | + _voiceXsCancel(); | ||
170 | + } | ||
171 | + } | ||
172 | + | ||
173 | + @override | ||
158 | Future<void> close() { | 174 | Future<void> close() { |
159 | pageController.dispose(); | 175 | pageController.dispose(); |
160 | audioPlayer.release(); | 176 | audioPlayer.release(); |
161 | audioPlayer.dispose(); | 177 | audioPlayer.dispose(); |
162 | _voiceXsCancel(); | 178 | _voiceXsCancel(); |
179 | + WidgetsBinding.instance.removeObserver(this); | ||
163 | return super.close(); | 180 | return super.close(); |
164 | } | 181 | } |
165 | 182 |