Commit b81332cac9a883de284377a729048504a8c873c2

Authored by 吴启风
1 parent c623c7b2

feat:喇叭组件替换

lib/pages/practice/topic_picture_page.dart
@@ -295,17 +295,16 @@ class _TopicPicturePage extends StatelessWidget { @@ -295,17 +295,16 @@ class _TopicPicturePage extends StatelessWidget {
295 Row( 295 Row(
296 mainAxisAlignment: MainAxisAlignment.center, 296 mainAxisAlignment: MainAxisAlignment.center,
297 children: [ 297 children: [
298 - GestureDetector( 298 + SpeakerWidget(
  299 + isPlaying: bloc.voicePlayState == VoicePlayState.playing,
  300 + // 控制动画播放
  301 + isClickable: true,
  302 + // 控制是否可点击
  303 + width: 32.w,
  304 + height: 32.w,
299 onTap: () { 305 onTap: () {
300 bloc.add(VoicePlayEvent()); 306 bloc.add(VoicePlayEvent());
301 }, 307 },
302 - child: Image.asset(  
303 - bloc.voicePlayState == VoicePlayState.playing  
304 - ? 'reade_answer'.assetGif  
305 - : 'voice'.assetPng,  
306 - height: 33.h,  
307 - width: 30.w,  
308 - ),  
309 ), 308 ),
310 10.horizontalSpace, 309 10.horizontalSpace,
311 Text(topics?.word ?? '', 310 Text(topics?.word ?? '',
@@ -376,16 +375,17 @@ class _TopicPicturePage extends StatelessWidget { @@ -376,16 +375,17 @@ class _TopicPicturePage extends StatelessWidget {
376 return SafeArea( 375 return SafeArea(
377 child: Column( 376 child: Column(
378 children: [ 377 children: [
379 - GestureDetector(  
380 - onTap: () {  
381 - bloc.add(VoicePlayEvent());  
382 - },  
383 - child: Image.asset(  
384 - bloc.voicePlayState == VoicePlayState.playing  
385 - ? 'reade_answer'.assetGif  
386 - : 'voice'.assetPng,  
387 - height: 33.h,  
388 - width: 30.w)), 378 + SpeakerWidget(
  379 + isPlaying: bloc.voicePlayState == VoicePlayState.playing,
  380 + // 控制动画播放
  381 + isClickable: true,
  382 + // 控制是否可点击
  383 + width: 32.w,
  384 + height: 32.w,
  385 + onTap: () {
  386 + bloc.add(VoicePlayEvent());
  387 + },
  388 + ),
389 26.verticalSpace, 389 26.verticalSpace,
390 SizedBox( 390 SizedBox(
391 width: 163.w * (topics?.topicAnswerList?.length ?? 0), 391 width: 163.w * (topics?.topicAnswerList?.length ?? 0),
lib/pages/reading/reading_page.dart
@@ -9,6 +9,7 @@ import 'package:wow_english/route/route.dart'; @@ -9,6 +9,7 @@ import 'package:wow_english/route/route.dart';
9 import '../../common/core/app_consts.dart'; 9 import '../../common/core/app_consts.dart';
10 import '../../common/core/user_util.dart'; 10 import '../../common/core/user_util.dart';
11 import '../../common/widgets/recorder_widget.dart'; 11 import '../../common/widgets/recorder_widget.dart';
  12 +import '../../common/widgets/speaker_widget.dart';
12 import '../../models/course_process_entity.dart'; 13 import '../../models/course_process_entity.dart';
13 import '../../utils/log_util.dart'; 14 import '../../utils/log_util.dart';
14 import 'bloc/reading_bloc.dart'; 15 import 'bloc/reading_bloc.dart';
@@ -156,21 +157,18 @@ class _ReadingPage extends StatelessWidget { @@ -156,21 +157,18 @@ class _ReadingPage extends StatelessWidget {
156 child: Row( 157 child: Row(
157 children: [ 158 children: [
158 5.horizontalSpace, 159 5.horizontalSpace,
159 - GestureDetector( 160 + SpeakerWidget(
  161 + isPlaying:
  162 + bloc.voicePlayState == VoicePlayState.playing &&
  163 + bloc.isOriginAudioPlaying,
  164 + // 控制动画播放
  165 + isClickable: !bloc.isRecording,
  166 + // 控制是否可点击
  167 + width: 42.w,
  168 + height: 42.w,
160 onTap: () { 169 onTap: () {
161 - if (bloc.isRecording) {  
162 - return;  
163 - }  
164 bloc.add(PlayOriginalAudioEvent(null)); 170 bloc.add(PlayOriginalAudioEvent(null));
165 }, 171 },
166 - child: Image.asset(  
167 - bloc.voicePlayState == VoicePlayState.playing &&  
168 - bloc.isOriginAudioPlaying  
169 - ? 'reade_answer'.assetGif  
170 - : 'voice'.assetPng,  
171 - height: 40.h,  
172 - width: 45.w,  
173 - ),  
174 ), 172 ),
175 SizedBox( 173 SizedBox(
176 width: 10.w, 174 width: 10.w,
@@ -188,17 +186,16 @@ class _ReadingPage extends StatelessWidget { @@ -188,17 +186,16 @@ class _ReadingPage extends StatelessWidget {
188 ), 186 ),
189 RecorderWidget( 187 RecorderWidget(
190 isPlaying: bloc.isRecording, 188 isPlaying: bloc.isRecording,
191 - isClickable: bloc.voicePlayState != VoicePlayState.playing, 189 + isClickable:
  190 + bloc.voicePlayState != VoicePlayState.playing,
192 width: 60.w, 191 width: 60.w,
193 height: 60.w, 192 height: 60.w,
194 onTap: () { 193 onTap: () {
195 if (bloc.isRecording) { 194 if (bloc.isRecording) {
196 bloc.add(XSVoiceStopEvent()); 195 bloc.add(XSVoiceStopEvent());
197 } else { 196 } else {
198 - bloc.add(XSVoiceStartEvent(  
199 - bloc.readingContent(),  
200 - '0',  
201 - UserUtil.getUser()?.id.toString())); 197 + bloc.add(XSVoiceStartEvent(bloc.readingContent(),
  198 + '0', UserUtil.getUser()?.id.toString()));
202 } 199 }
203 }, 200 },
204 ), 201 ),