Commit 82c8633c4dc35f8c5bae3f4f69b512cd9b6c3402

Authored by biao
1 parent fac6a671

音频添加 页面优化

.fvm/flutter_sdk
1 -/Users/stay/fvm/versions/3.19.2  
2 \ No newline at end of file 1 \ No newline at end of file
  2 +/Users/biao/fvm/versions/3.19.2
3 \ No newline at end of file 3 \ No newline at end of file
.fvm/fvm_config.json
1 { 1 {
2 - "flutterSdkVersion": "3.19.2",  
3 - "flavors": {} 2 + "flutterSdkVersion": "3.19.2"
4 } 3 }
5 \ No newline at end of file 4 \ No newline at end of file
assets/images/micro_phone.gif

17.3 KB | W: | H:

17.2 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
assets/images/reade_answer.gif 100644 → 100755

5.31 KB | W: | H:

2.47 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
assets/images/voice.png

8.3 KB | W: | H:

13 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin
assets/sounds/class_time.mp3 0 → 100644
No preview for this file type
assets/sounds/game_time.mp3 0 → 100644
No preview for this file type
assets/sounds/music_time.mp3 0 → 100644
No preview for this file type
assets/sounds/quiz_time.mp3 0 → 100644
No preview for this file type
assets/sounds/reading_time.mp3 0 → 100644
No preview for this file type
assets/sounds/video_time.mp3 0 → 100644
No preview for this file type
assets/sounds/welcome_to_wow.mp3 0 → 100644
No preview for this file type
ios/Runner.xcodeproj/project.pbxproj
@@ -2327,7 +2327,7 @@ @@ -2327,7 +2327,7 @@
2327 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 2327 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
2328 CODE_SIGN_IDENTITY = "Apple Development"; 2328 CODE_SIGN_IDENTITY = "Apple Development";
2329 CODE_SIGN_STYLE = Automatic; 2329 CODE_SIGN_STYLE = Automatic;
2330 - CURRENT_PROJECT_VERSION = 13; 2330 + CURRENT_PROJECT_VERSION = 15;
2331 DEVELOPMENT_TEAM = T8P9KW8GWH; 2331 DEVELOPMENT_TEAM = T8P9KW8GWH;
2332 ENABLE_BITCODE = NO; 2332 ENABLE_BITCODE = NO;
2333 INFOPLIST_FILE = Runner/Info.plist; 2333 INFOPLIST_FILE = Runner/Info.plist;
@@ -2671,7 +2671,7 @@ @@ -2671,7 +2671,7 @@
2671 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 2671 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
2672 CODE_SIGN_IDENTITY = "Apple Development"; 2672 CODE_SIGN_IDENTITY = "Apple Development";
2673 CODE_SIGN_STYLE = Automatic; 2673 CODE_SIGN_STYLE = Automatic;
2674 - CURRENT_PROJECT_VERSION = 13; 2674 + CURRENT_PROJECT_VERSION = 15;
2675 DEVELOPMENT_TEAM = T8P9KW8GWH; 2675 DEVELOPMENT_TEAM = T8P9KW8GWH;
2676 ENABLE_BITCODE = NO; 2676 ENABLE_BITCODE = NO;
2677 HEADER_SEARCH_PATHS = ( 2677 HEADER_SEARCH_PATHS = (
@@ -2876,7 +2876,7 @@ @@ -2876,7 +2876,7 @@
2876 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; 2876 CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
2877 CODE_SIGN_IDENTITY = "Apple Development"; 2877 CODE_SIGN_IDENTITY = "Apple Development";
2878 CODE_SIGN_STYLE = Automatic; 2878 CODE_SIGN_STYLE = Automatic;
2879 - CURRENT_PROJECT_VERSION = 13; 2879 + CURRENT_PROJECT_VERSION = 15;
2880 DEVELOPMENT_TEAM = T8P9KW8GWH; 2880 DEVELOPMENT_TEAM = T8P9KW8GWH;
2881 ENABLE_BITCODE = NO; 2881 ENABLE_BITCODE = NO;
2882 INFOPLIST_FILE = Runner/Info.plist; 2882 INFOPLIST_FILE = Runner/Info.plist;
ios/Runner/Info.plist
@@ -77,11 +77,11 @@ @@ -77,11 +77,11 @@
77 <true/> 77 <true/>
78 </dict> 78 </dict>
79 <key>NSCameraUsageDescription</key> 79 <key>NSCameraUsageDescription</key>
80 - <string>需要访问相机完成拍照</string> 80 + <string>需要访问相机,完成修改头像功能</string>
81 <key>NSMicrophoneUsageDescription</key> 81 <key>NSMicrophoneUsageDescription</key>
82 - <string>需要获取录音完成后续功能</string> 82 + <string>需要获取录音,完成上课功能</string>
83 <key>NSPhotoLibraryUsageDescription</key> 83 <key>NSPhotoLibraryUsageDescription</key>
84 - <string>需要获取照片用来修改头像</string> 84 + <string>需要获取照片,完成上传头像功能</string>
85 <key>UIApplicationSupportsIndirectInputEvents</key> 85 <key>UIApplicationSupportsIndirectInputEvents</key>
86 <true/> 86 <true/>
87 <key>UILaunchStoryboardName</key> 87 <key>UILaunchStoryboardName</key>
lib/pages/home/bloc.dart
  1 +import 'package:audioplayers/audioplayers.dart';
1 import 'package:bloc/bloc.dart'; 2 import 'package:bloc/bloc.dart';
  3 +import 'package:wow_english/common/extension/string_extension.dart';
2 4
3 import '../../common/core/app_config_helper.dart'; 5 import '../../common/core/app_config_helper.dart';
4 import '../../common/request/dao/system_dao.dart'; 6 import '../../common/request/dao/system_dao.dart';
@@ -16,6 +18,7 @@ class HomeBloc extends Bloc&lt;HomeEvent, HomeState&gt; { @@ -16,6 +18,7 @@ class HomeBloc extends Bloc&lt;HomeEvent, HomeState&gt; {
16 bool exchangeResult = false; 18 bool exchangeResult = false;
17 19
18 void _init(InitEvent event, Emitter<HomeState> emit) async { 20 void _init(InitEvent event, Emitter<HomeState> emit) async {
  21 + AudioPlayer().play(AssetSource('welcome_to_wow'.assetMp3));
19 await _checkUpdate(emit); 22 await _checkUpdate(emit);
20 } 23 }
21 24
lib/pages/home/view.dart
  1 +import 'package:audioplayers/audioplayers.dart';
1 import 'package:flutter/material.dart'; 2 import 'package:flutter/material.dart';
2 import 'package:flutter_app_update/azhon_app_update.dart'; 3 import 'package:flutter_app_update/azhon_app_update.dart';
3 import 'package:flutter_app_update/update_model.dart'; 4 import 'package:flutter_app_update/update_model.dart';
@@ -70,6 +71,8 @@ class _HomePageView extends StatelessWidget { @@ -70,6 +71,8 @@ class _HomePageView extends StatelessWidget {
70 child: GestureDetector( 71 child: GestureDetector(
71 onTap: () { 72 onTap: () {
72 _checkPermission(() { 73 _checkPermission(() {
  74 + AudioPlayer()
  75 + .play(AssetSource('class_time'.assetMp3));
73 pushNamed(AppRouteName.courseUnit) 76 pushNamed(AppRouteName.courseUnit)
74 .then((value) => { 77 .then((value) => {
75 if (value != null) 78 if (value != null)
@@ -120,19 +123,9 @@ class _HomePageView extends StatelessWidget { @@ -120,19 +123,9 @@ class _HomePageView extends StatelessWidget {
120 child: Column( 123 child: Column(
121 mainAxisAlignment: MainAxisAlignment.center, 124 mainAxisAlignment: MainAxisAlignment.center,
122 children: [ 125 children: [
123 - Stack(  
124 - alignment: AlignmentDirectional.center,  
125 - children: [  
126 - Image.asset(  
127 - 'bg_frame_module'.assetPng,  
128 - width: 162.5.w,  
129 - height: 203.5.h),  
130 - Image.asset('xe_shop'.assetPng,  
131 - width: 140.5.w, height: 172.h)  
132 - ]),  
133 - 44.verticalSpace,  
134 - // Image.asset('label_module_game'.assetPng,  
135 - // width: 124.w, height: 34.h), 126 + Image.asset('xe_shop'.assetPng,
  127 + width: 140.5.w, height: 172.h),
  128 + 44.verticalSpace
136 ], 129 ],
137 )); 130 ));
138 }), 131 }),
@@ -143,6 +136,8 @@ class _HomePageView extends StatelessWidget { @@ -143,6 +136,8 @@ class _HomePageView extends StatelessWidget {
143 return GestureDetector( 136 return GestureDetector(
144 onTap: () { 137 onTap: () {
145 _checkPermission(() { 138 _checkPermission(() {
  139 + AudioPlayer().play(
  140 + AssetSource('game_time'.assetMp3));
146 pushNamed(AppRouteName.games); 141 pushNamed(AppRouteName.games);
147 }, bloc); 142 }, bloc);
148 }, 143 },
lib/pages/practice/topic_picture_page.dart
@@ -59,7 +59,12 @@ class _TopicPicturePage extends StatelessWidget { @@ -59,7 +59,12 @@ class _TopicPicturePage extends StatelessWidget {
59 builder: (context, state) { 59 builder: (context, state) {
60 final bloc = BlocProvider.of<TopicPictureBloc>(context); 60 final bloc = BlocProvider.of<TopicPictureBloc>(context);
61 return Container( 61 return Container(
62 - color: Colors.white, 62 + decoration: BoxDecoration(
  63 + image: DecorationImage(
  64 + image: AssetImage('read_background'.assetPng), // 背景图片路径
  65 + fit: BoxFit.cover, // 适应图片的方式
  66 + ),
  67 + ),
63 child: Stack( 68 child: Stack(
64 children: [ 69 children: [
65 Column( 70 Column(
@@ -75,6 +80,7 @@ class _TopicPicturePage extends StatelessWidget { @@ -75,6 +80,7 @@ class _TopicPicturePage extends StatelessWidget {
75 // Navigator.pop(context); 80 // Navigator.pop(context);
76 }, 81 },
77 ), 82 ),
  83 + 35.verticalSpace,
78 Expanded( 84 Expanded(
79 child: PageView.builder( 85 child: PageView.builder(
80 itemCount: bloc.entity?.topics?.length, 86 itemCount: bloc.entity?.topics?.length,
@@ -109,12 +115,7 @@ class _TopicPicturePage extends StatelessWidget { @@ -109,12 +115,7 @@ class _TopicPicturePage extends StatelessWidget {
109 }), 115 }),
110 ) 116 )
111 ], 117 ],
112 - ),  
113 - Positioned(  
114 - left: 0,  
115 - right: 0,  
116 - bottom: 0,  
117 - child: Image.asset('bottom_grass'.assetPng)) 118 + )
118 ], 119 ],
119 ), 120 ),
120 ); 121 );
@@ -299,7 +300,7 @@ class _TopicPicturePage extends StatelessWidget { @@ -299,7 +300,7 @@ class _TopicPicturePage extends StatelessWidget {
299 26.verticalSpace, 300 26.verticalSpace,
300 SizedBox( 301 SizedBox(
301 height: 143.h, 302 height: 143.h,
302 - width: 163.w * (topics?.topicAnswerList?.length ?? 0), 303 + width: 203.w * (topics?.topicAnswerList?.length ?? 0),
303 child: ListView.builder( 304 child: ListView.builder(
304 scrollDirection: Axis.horizontal, 305 scrollDirection: Axis.horizontal,
305 physics: const NeverScrollableScrollPhysics(), 306 physics: const NeverScrollableScrollPhysics(),
@@ -321,7 +322,7 @@ class _TopicPicturePage extends StatelessWidget { @@ -321,7 +322,7 @@ class _TopicPicturePage extends StatelessWidget {
321 builder: (context, state) { 322 builder: (context, state) {
322 final bloc = BlocProvider.of<TopicPictureBloc>(context); 323 final bloc = BlocProvider.of<TopicPictureBloc>(context);
323 return Container( 324 return Container(
324 - padding: EdgeInsets.symmetric(horizontal: 10.w), 325 + padding: EdgeInsets.symmetric(horizontal: 20.w),
325 child: GestureDetector( 326 child: GestureDetector(
326 onTap: () => bloc.add(SelectItemEvent(index)), 327 onTap: () => bloc.add(SelectItemEvent(index)),
327 child: Container( 328 child: Container(
@@ -333,15 +334,13 @@ class _TopicPicturePage extends StatelessWidget { @@ -333,15 +334,13 @@ class _TopicPicturePage extends StatelessWidget {
333 borderRadius: BorderRadius.circular(15), 334 borderRadius: BorderRadius.circular(15),
334 ), 335 ),
335 height: 143.h, 336 height: 143.h,
336 - width: 143.w, 337 + width: 163.w,
337 child: Container( 338 child: Container(
338 decoration: BoxDecoration( 339 decoration: BoxDecoration(
339 color: Colors.white, 340 color: Colors.white,
340 borderRadius: BorderRadius.circular(15), 341 borderRadius: BorderRadius.circular(15),
341 - border: Border.all(  
342 - width: 1.0, color: const Color(0xFF140C10)),  
343 image: DecorationImage( 342 image: DecorationImage(
344 - fit: BoxFit.fitWidth, 343 + fit: BoxFit.fill,
345 image: NetworkImage(answerList?.picUrl ?? ''))), 344 image: NetworkImage(answerList?.picUrl ?? ''))),
346 ), 345 ),
347 ), 346 ),
@@ -449,12 +448,18 @@ class _TopicPicturePage extends StatelessWidget { @@ -449,12 +448,18 @@ class _TopicPicturePage extends StatelessWidget {
449 return Row( 448 return Row(
450 mainAxisAlignment: MainAxisAlignment.center, 449 mainAxisAlignment: MainAxisAlignment.center,
451 children: [ 450 children: [
452 - OwImageWidget(  
453 - name: topics?.picUrl ?? '',  
454 - height: 186.h,  
455 - width: 186.w, 451 + ClipRRect(
  452 + borderRadius: BorderRadius.circular(20),
  453 + child: Container(
  454 + color: Colors.white,
  455 + child: OwImageWidget(
  456 + name: topics?.picUrl ?? '',
  457 + height: 186.h,
  458 + width: 186.w,
  459 + ),
  460 + ),
456 ), 461 ),
457 - 160.horizontalSpace, 462 + 120.horizontalSpace,
458 Column( 463 Column(
459 mainAxisAlignment: MainAxisAlignment.center, 464 mainAxisAlignment: MainAxisAlignment.center,
460 children: [ 465 children: [
@@ -472,8 +477,8 @@ class _TopicPicturePage extends StatelessWidget { @@ -472,8 +477,8 @@ class _TopicPicturePage extends StatelessWidget {
472 bloc.voicePlayState == VoicePlayState.playing 477 bloc.voicePlayState == VoicePlayState.playing
473 ? 'reade_answer'.assetGif 478 ? 'reade_answer'.assetGif
474 : 'voice'.assetPng, 479 : 'voice'.assetPng,
475 - height: 52.h,  
476 - width: 46.w, 480 + height: 45.h,
  481 + width: 45.w,
477 ), 482 ),
478 10.horizontalSpace, 483 10.horizontalSpace,
479 Text(topics?.word ?? '') 484 Text(topics?.word ?? '')
@@ -506,8 +511,8 @@ class _TopicPicturePage extends StatelessWidget { @@ -506,8 +511,8 @@ class _TopicPicturePage extends StatelessWidget {
506 bloc.isVoicing 511 bloc.isVoicing
507 ? 'micro_phone'.assetGif 512 ? 'micro_phone'.assetGif
508 : 'micro_phone'.assetPng, 513 : 'micro_phone'.assetPng,
509 - height: 75.w,  
510 - width: 75.w, 514 + height: 46.h,
  515 + width: 46.w,
511 ), 516 ),
512 ) 517 )
513 ], 518 ],
lib/pages/practice/widgets/practice_header_widget.dart
@@ -12,9 +12,10 @@ class PracticeHeaderWidget extends StatelessWidget { @@ -12,9 +12,10 @@ class PracticeHeaderWidget extends StatelessWidget {
12 @override 12 @override
13 Widget build(BuildContext context) { 13 Widget build(BuildContext context) {
14 return Container( 14 return Container(
15 - color: Colors.white, 15 + color: Colors.transparent,
16 height: kToolbarHeight + 3.h, 16 height: kToolbarHeight + 3.h,
17 child: AppBar( 17 child: AppBar(
  18 + backgroundColor: Colors.transparent,
18 leading: GestureDetector( 19 leading: GestureDetector(
19 child: Image.asset( 20 child: Image.asset(
20 'back_around'.assetPng, 21 'back_around'.assetPng,
@@ -25,7 +26,7 @@ class PracticeHeaderWidget extends StatelessWidget { @@ -25,7 +26,7 @@ class PracticeHeaderWidget extends StatelessWidget {
25 ), 26 ),
26 centerTitle: true, 27 centerTitle: true,
27 title: Container( 28 title: Container(
28 - height: 40.h, 29 + height: 20.h,
29 width: 100.w, // 容器宽度 30 width: 100.w, // 容器宽度
30 // padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 10.h), 31 // padding: EdgeInsets.symmetric(horizontal: 27.w, vertical: 10.h),
31 alignment: Alignment.center, 32 alignment: Alignment.center,
lib/pages/reading/bloc/reading_event.dart
@@ -39,7 +39,7 @@ class XSVoiceStartEvent extends ReadingPageEvent { @@ -39,7 +39,7 @@ class XSVoiceStartEvent extends ReadingPageEvent {
39 final String content; 39 final String content;
40 final String type; 40 final String type;
41 final String? userId; 41 final String? userId;
42 - XSVoiceStartEvent(this.content,this.type,this.userId); 42 + XSVoiceStartEvent(this.content, this.type, this.userId);
43 } 43 }
44 44
45 ///先声评测停止 45 ///先声评测停止
@@ -52,4 +52,7 @@ class OnXSVoiceStateChangeEvent extends ReadingPageEvent {} @@ -52,4 +52,7 @@ class OnXSVoiceStateChangeEvent extends ReadingPageEvent {}
52 class VoicePlayStateChangeEvent extends ReadingPageEvent {} 52 class VoicePlayStateChangeEvent extends ReadingPageEvent {}
53 53
54 ///录音播放 54 ///录音播放
55 -class PlayRecordAudioEvent extends ReadingPageEvent {}  
56 \ No newline at end of file 55 \ No newline at end of file
  56 +class PlayRecordAudioEvent extends ReadingPageEvent {}
  57 +
  58 +///播放下一页
  59 +class PlayNextPageEvent extends ReadingPageEvent {}
lib/pages/reading/reading_page.dart
@@ -21,17 +21,16 @@ class ReadingPage extends StatelessWidget { @@ -21,17 +21,16 @@ class ReadingPage extends StatelessWidget {
21 @override 21 @override
22 Widget build(BuildContext context) { 22 Widget build(BuildContext context) {
23 return BlocProvider( 23 return BlocProvider(
24 - create: (_) => ReadingPageBloc(context, PageController(), courseLessonId ?? '')  
25 - ..add(InitBlocEvent())  
26 - ..add(RequestDataEvent())  
27 - ..add(XSVoiceInitEvent(  
28 - {  
29 - 'appKey':AppConsts.xsAppKey,  
30 - 'service':AppConsts.xsAppService,  
31 - 'secretKey':AppConsts.xsAppSecretKey,  
32 - 'userId':UserUtil.getUser()!.id.toString(),  
33 - }  
34 - )), 24 + create: (_) =>
  25 + ReadingPageBloc(context, PageController(), courseLessonId ?? '')
  26 + ..add(InitBlocEvent())
  27 + ..add(RequestDataEvent())
  28 + ..add(XSVoiceInitEvent({
  29 + 'appKey': AppConsts.xsAppKey,
  30 + 'service': AppConsts.xsAppService,
  31 + 'secretKey': AppConsts.xsAppSecretKey,
  32 + 'userId': UserUtil.getUser()!.id.toString(),
  33 + })),
35 child: _ReadingPage(), 34 child: _ReadingPage(),
36 ); 35 );
37 } 36 }
@@ -60,8 +59,8 @@ class _ReadingPage extends StatelessWidget { @@ -60,8 +59,8 @@ class _ReadingPage extends StatelessWidget {
60 ); 59 );
61 } 60 }
62 61
63 - Widget _readingPageView() => BlocBuilder<ReadingPageBloc, ReadingPageState>(  
64 - builder: (context, state) { 62 + Widget _readingPageView() =>
  63 + BlocBuilder<ReadingPageBloc, ReadingPageState>(builder: (context, state) {
65 final bloc = BlocProvider.of<ReadingPageBloc>(context); 64 final bloc = BlocProvider.of<ReadingPageBloc>(context);
66 return Container( 65 return Container(
67 color: Colors.white, 66 color: Colors.white,
@@ -84,16 +83,14 @@ class _ReadingPage extends StatelessWidget { @@ -84,16 +83,14 @@ class _ReadingPage extends StatelessWidget {
84 children: [ 83 children: [
85 Padding( 84 Padding(
86 padding: 85 padding:
87 - EdgeInsets.only(left: ScreenUtil().bottomBarHeight), 86 + EdgeInsets.only(left: ScreenUtil().bottomBarHeight),
88 child: IconButton( 87 child: IconButton(
89 onPressed: () { 88 onPressed: () {
90 - popPage(  
91 - data:{  
92 - 'currentStep':bloc.currentPage,  
93 - 'courseLessonId':bloc.courseLessonId,  
94 - 'isCompleted':bloc.isLastPage(),  
95 - }  
96 - ); 89 + popPage(data: {
  90 + 'currentStep': bloc.currentPage,
  91 + 'courseLessonId': bloc.courseLessonId,
  92 + 'isCompleted': bloc.isLastPage(),
  93 + });
97 }, 94 },
98 icon: Image.asset( 95 icon: Image.asset(
99 'back_around'.assetPng, 96 'back_around'.assetPng,
@@ -167,7 +164,7 @@ class _ReadingPage extends StatelessWidget { @@ -167,7 +164,7 @@ class _ReadingPage extends StatelessWidget {
167 }, 164 },
168 child: Image.asset( 165 child: Image.asset(
169 bloc.voicePlayState == VoicePlayState.playing && 166 bloc.voicePlayState == VoicePlayState.playing &&
170 - bloc.isOriginAudioPlaying 167 + bloc.isOriginAudioPlaying
171 ? 'reade_answer'.assetGif 168 ? 'reade_answer'.assetGif
172 : 'voice'.assetPng, 169 : 'voice'.assetPng,
173 height: 40.h, 170 height: 40.h,
@@ -179,12 +176,12 @@ class _ReadingPage extends StatelessWidget { @@ -179,12 +176,12 @@ class _ReadingPage extends StatelessWidget {
179 ), 176 ),
180 Expanded( 177 Expanded(
181 child: Text( 178 child: Text(
182 - bloc.currentPageData()?.word?.trim() ?? '',  
183 - style: TextStyle(  
184 - color: const Color(0xFF333333), fontSize: 21.sp),  
185 - maxLines: 2,  
186 - overflow: TextOverflow.ellipsis,  
187 - )), 179 + bloc.currentPageData()?.word?.trim() ?? '',
  180 + style: TextStyle(
  181 + color: const Color(0xFF333333), fontSize: 21.sp),
  182 + maxLines: 2,
  183 + overflow: TextOverflow.ellipsis,
  184 + )),
188 SizedBox( 185 SizedBox(
189 width: 10.w, 186 width: 10.w,
190 ), 187 ),
@@ -241,8 +238,7 @@ class _ReadingPage extends StatelessWidget { @@ -241,8 +238,7 @@ class _ReadingPage extends StatelessWidget {
241 return Stack( 238 return Stack(
242 children: [ 239 children: [
243 Positioned.fill( 240 Positioned.fill(
244 - child:  
245 - Image.network(readings.picUrl ?? '', fit: BoxFit.cover), 241 + child: Image.network(readings.picUrl ?? '', fit: BoxFit.cover),
246 ), 242 ),
247 ], 243 ],
248 ); 244 );
lib/pages/section/section_page.dart
  1 +import 'package:audioplayers/audioplayers.dart';
1 import 'package:flutter/cupertino.dart'; 2 import 'package:flutter/cupertino.dart';
2 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
3 import 'package:flutter_bloc/flutter_bloc.dart'; 4 import 'package:flutter_bloc/flutter_bloc.dart';
@@ -96,12 +97,18 @@ class _SectionPageView extends StatelessWidget { @@ -96,12 +97,18 @@ class _SectionPageView extends StatelessWidget {
96 state.courseType != SectionType.pictureBook.value) { 97 state.courseType != SectionType.pictureBook.value) {
97 ///视频类型 98 ///视频类型
98 ///获取视频课程内容 99 ///获取视频课程内容
  100 + if (state.courseType == 1) {
  101 + AudioPlayer().play(AssetSource('music_time'.assetMp3));
  102 + } else {
  103 + AudioPlayer().play(AssetSource('video_time'.assetMp3));
  104 + }
99 bloc.add(RequestVideoLessonEvent( 105 bloc.add(RequestVideoLessonEvent(
100 state.courseLessonId, state.courseType)); 106 state.courseLessonId, state.courseType));
101 return; 107 return;
102 } 108 }
103 109
104 if (state.courseType == SectionType.pictureBook.value) { 110 if (state.courseType == SectionType.pictureBook.value) {
  111 + AudioPlayer().play(AssetSource('reading_time'.assetMp3));
105 //绘本 112 //绘本
106 pushNamed(AppRouteName.reading, 113 pushNamed(AppRouteName.reading,
107 arguments: {'courseLessonId': state.courseLessonId}) 114 arguments: {'courseLessonId': state.courseLessonId})
@@ -121,6 +128,7 @@ class _SectionPageView extends StatelessWidget { @@ -121,6 +128,7 @@ class _SectionPageView extends StatelessWidget {
121 128
122 if (state.courseType == SectionType.practice.value) { 129 if (state.courseType == SectionType.practice.value) {
123 //练习 130 //练习
  131 + AudioPlayer().play(AssetSource('quiz_time'.assetMp3));
124 pushNamed(AppRouteName.topicPic, 132 pushNamed(AppRouteName.topicPic,
125 arguments: {'courseLessonId': state.courseLessonId}) 133 arguments: {'courseLessonId': state.courseLessonId})
126 .then((value) { 134 .then((value) {
lib/pages/user/user_page.dart
@@ -173,15 +173,7 @@ class _UserView extends StatelessWidget { @@ -173,15 +173,7 @@ class _UserView extends StatelessWidget {
173 UserUtil.getUser()?.phoneNum == '17718485544') 173 UserUtil.getUser()?.phoneNum == '17718485544')
174 ? 12.verticalSpace 174 ? 12.verticalSpace
175 : 1.verticalSpace), 175 : 1.verticalSpace),
176 - OutlinedButton(  
177 - onPressed: () => pushNamed(AppRouteName.fogPwd),  
178 - style: normalButtonStyle,  
179 - child: Text(  
180 - "修改密码",  
181 - style: textStyle21sp,  
182 - ),  
183 - ),  
184 - 12.verticalSpace, 176 +
185 Offstage( 177 Offstage(
186 offstage: AppConfigHelper.shouldHidePay(), 178 offstage: AppConfigHelper.shouldHidePay(),
187 child: OutlinedButton( 179 child: OutlinedButton(
@@ -199,6 +191,15 @@ class _UserView extends StatelessWidget { @@ -199,6 +191,15 @@ class _UserView extends StatelessWidget {
199 style: textStyle21sp, 191 style: textStyle21sp,
200 )), 192 )),
201 ), 193 ),
  194 + 12.verticalSpace,
  195 + OutlinedButton(
  196 + onPressed: () => pushNamed(AppRouteName.fogPwd),
  197 + style: normalButtonStyle,
  198 + child: Text(
  199 + "修改密码",
  200 + style: textStyle21sp,
  201 + ),
  202 + ),
202 Offstage( 203 Offstage(
203 offstage: AppConfigHelper.shouldHidePay(), 204 offstage: AppConfigHelper.shouldHidePay(),
204 child: 12.verticalSpace, 205 child: 12.verticalSpace,